我有一个帐户列表,其中包含一些保存在数据库中的属性。
在我的窗口中,我将显示帐户列表中的用户名
for (int i = 0; i < liste.Count; i++)
{
Label l = new Label();
l.Height = 30;
l.HorizontalAlignment = HorizontalAlignment.Left;
l.Content = liste[i].Username + "\n";
l.MouseDown += new MouseButtonEventHandler(Selectuser);
l.HorizontalContentAlignment = HorizontalAlignment.Left;
stack.Children.Add(l); // stackpanel in the xaml
SetKnownImageAcc(Convert.ToInt32( liste[i].AccAId)); // add a picture near the username
}
所以我现在在我创建的每个标签上都有MouseButton事件,但是当我点击其中一个用户名时,后面的代码我只能得到Label的内容,所以我不知道它究竟是哪个帐户。
当然,我可以循环检查liste[i].Username = this.content
但我的问题是,我有更多的帐户,例如我有2个帐户一个Facebook和一个谷歌,但他们有相同的用户名,我怎么知道现在在代码隐藏哪个帐户,我点击的地方
一位朋友告诉我,我应该尝试使用数据绑定,但我不熟悉编码,所以我不知道该怎么做,或者这是否适用于数据绑定。
感谢您的帮助:)
答案 0 :(得分:2)
您可以这样做的一种方法是设置标签的Tag属性:
l.Tag = liste[i];
然后,您可以使用订阅的方法恢复您的用户:
var myUser = (User)((Label)sender).Tag;
但是你的朋友是对的:数据绑定是一种更好的方法。事实上,在大多数情况下,您不应该在代码隐藏文件中有任何代码(除了自动生成的代码)。尝试在您最喜欢的搜索引擎上寻找MVVM。