如何解决Silverlight将绑定添加到控件
|public class Person
{
private int _Id;
public int Id{get{return value;} set{_Id=value;}}
private string _Code
public string Code{get{return _Code;} set {_Code=value;}}
private string _Name;
public string Name{get{return _Name;}set{_Name=value;}}
}
这是我的模特班
我的窗体中有两个Combobox.Combo1和Combo2。
Combo1 DisplayMember代码值Member ID
Combo2 DisplayMember名称ValueMember ID
我想当我更改代码或命名另一个组合框编辑值并更改显示值时
解决方法
我建议进行一些更改:
首先,您可能需要将您的人员类别分为两类:代码和人员
public class Person
{
public int Id { get; set; }
public int CodeId { get; set; }
public string Name { get; set; }
}
public class Code
{
public int Id { get; set; }
public string CodeText { get; set; }
}
然后创建一个您将设置为视图的数据上下文的类,通常在MVVM设计模式中称为视图模型:
public class Data : INotifyPropertyChanged
{
public List<Person> People { get; set; }
public List<Code> Codes { get; set; }
private Code _selectedCode;
public Code SelectedCode
{
get
{
return _selectedCode;
}
set
{
_selectedCode = value;
PropertyChanged(this,new PropertyChangedEventArgs(\"SelectedCode\"));
SelectedPeople = People.Where(p => p.CodeId == SelectedCode.Id).ToList();
}
}
private List<Person> _selectedPeople;
public List<Person> SelectedPeople
{
get
{
return _selectedPeople;
}
set
{
_selectedPeople = value;
PropertyChanged(this,new PropertyChangedEventArgs(\"SelectedPeople\"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
}
请注意,它实现了INotifyPropertyChanged。这对于在Silverlight中进行绑定至关重要。在MainPage.xaml.cs的构造函数中:
Data data = new Data
{
Codes = new List<Code>(),// populate your codes
People = new List<Person>() // populate your people,giving them correct codeids
}
this.DataContext = data;
现在,您认为是XAMl:
<ComboBox Height=\"23\" HorizontalAlignment=\"Left\" Margin=\"12,12,0\" Name=\"comboBox1\" VerticalAlignment=\"Top\" Width=\"120\" ItemsSource=\"{Binding Codes}\" SelectedItem=\"{Binding SelectedCode,Mode=TwoWay}\" DisplayMemberPath=\"CodeText\" />
<ComboBox Height=\"23\" HorizontalAlignment=\"Left\" Margin=\"12,54,0\" Name=\"comboBox2\" VerticalAlignment=\"Top\" Width=\"120\" ItemsSource=\"{Binding SelectedPeople}\" DisplayMemberPath=\"Name\" />
请注意,第一个组合框绑定到DataContext上的Codes集合。 selectedItem属性TWO-WAY绑定到数据上下文上的SelectedCode属性。当用户更改所选项目时,将调用数据上下文中的设置器。我们更新了要显示的人物列表,并引发了PropertyChanged事件,该事件通知视图它需要更新人员框。
当然,如果正确实现了MVVM设计模式,这将更加清洁。我喜欢为此使用MVVM Light工具包。
我知道这很困难,但是我想引导您走上正确的道路,以便您可以在此项目中以及将来使用此知识:)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。