返回.Close()上的对象的WPF表单

时间:2015-09-13 21:37:37

标签: c# wpf

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

但是有我的问题,主函数不等待属性“非空”而是取空值,所以没有任何反应。

我已经查看了每一个Google结果(在第一页上)我可以提出的每一个可能的配方。 DialogResult不返回对象。

谢谢。

如果你想看一下,这是我的代码:

//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();
  }

1 个答案:

答案 0 :(得分:0)

好的,你有两种处理方法。要么,你在recherche控件上使用一个事件,并在那里做你的东西。 (事件的sender对象应该是窗口/控件)。

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

如果Recherche继承自Window,那么这样就可以了:

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