将WPF C#WPF数据绑定到Codebehind

时间:2016-04-18 15:02:36

标签: c# wpf list data-binding

我有一个帐户列表,其中包含一些保存在数据库中的属性。

在我的窗口中,我将显示帐户列表中的用户名

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和一个谷歌,但他们有相同的用户名,我怎么知道现在在代码隐藏哪个帐户,我点击的地方

一位朋友告诉我,我应该尝试使用数据绑定,但我不熟悉编码,所以我不知道该怎么做,或者这是否适用于数据绑定。

感谢您的帮助:)

1 个答案:

答案 0 :(得分:2)

您可以这样做的一种方法是设置标签的Tag属性:

l.Tag = liste[i];

然后,您可以使用订阅的方法恢复您的用户:

var myUser = (User)((Label)sender).Tag;

但是你的朋友是对的:数据绑定是一种更好的方法。事实上,在大多数情况下,您不应该在代码隐藏文件中有任何代码(除了自动生成的代码)。尝试在您最喜欢的搜索引擎上寻找MVVM。