在.close()上返回一个对象的WPF表单

本文关键字:一个对象 WPF 表单 返回 close | 更新日期: 2023-09-27 18:12:30

所以我正在为此工作,我有一个数据库,当有人按下"搜索"按钮时,它会打开一个提示,他/她输入他正在寻找的名称或ID。然后,Lambda表达式在数据库中找到正确的对象,并将其放入一个函数中供Main函数使用。

但是有我的问题,主函数不等待属性为"非空",而是取空值,所以什么也没发生。

我已经查了每一个谷歌结果(在第一页)每一个可能的公式我能想到。对话sult不返回对象。

谢谢。

下面是我的代码,如果你想看的话:

//In the main function (well main WPF window)
Recherche recherche = new Recherche("film", (this.rbIdentifiant.IsChecked == true ? true : false));
if (recherche.ShowDialog() == true)
{
    ClientsListView.ScrollIntoView(recherche.Obj);
}
//In the prompt
private string _sType;
private bool _bType;
public object Obj { get; private set; }
public Recherche(string sType, bool bType)
{
    InitializeComponent();
    _sType = sType;
    _bType = bType;
    if (bType)
        this._lblTypeRecherche.Content = "ID";
    else
        this._lblTypeRecherche.Content = "Nom/Titre:";
}
private void _btnRecherche_Click(object sender, RoutedEventArgs e)
{
     using (var db = new DBaseContainer())
     {
         if (_sType == "film" && _bType)
         {
             int iId = this._txtRecherche.Text.ToInt();
             var film = db.Films.Where(x => x.FilmId == iId);
              Obj = film.First();
         }
          if (_sType == "film" && !_bType)
         {
             var film = db.Films.Where(x => x.Titre ==  this._txtRecherche.Text);
             Obj = film.First();
         }
          if (_sType == "client" && _bType)
         {
             int iId = this._txtRecherche.Text.ToInt();
             var client = db.Clients.Where(x => x.ClientId == iId);
             Obj = client.First();
         }
          if (_sType == "client" && !_bType)
         {
             var client = db.Clients.Where(x => x.Nom == this._txtRecherche.Text);
             Obj = client.First();
         }
     }
     this.Close();
  }

在.close()上返回一个对象的WPF表单

有两种处理方法。或者,你在recherche控件上使用一个事件并在那里做你的事情。(事件的sender对象应为窗口/控件)。

或者在控件的.Visibility属性上使用while循环。

如果Recherche继承自Window,这将正常工作:

Recherche recherche = new Recherche("film", (this.rbIdentifiant.IsChecked == true ? true : false));
recherche.Closed += (o, e) => {ClientsListView.ScrollIntoView((o as Recherche).Obj);};