所以我正在研究这个,我有一个数据库,当有人按下“搜索”按钮时,它会打开一个提示,他/她输入他正在寻找的名称或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();
}
答案 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);};