我推荐一些变化:
首先,你可能要打破你的人出类分为两类:代码和人
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; }
}
然后创建一个类,哟日子会把你设为您的视图的DataContext的,通常称为在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,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,0" Name="comboBox2" VerticalAlignment="Top" Width="120" ItemsSource="{Binding SelectedPeople}" DisplayMemberPath="Name" />
注意到的第一组合框结合对的DataContext的代码集合。 SelectedItem属性双向结合对的DataContext SelectedCode财产。当用户更改所选项目时,数据上下文中的设置器会被调用。我们更新了令人列表中展现,并提高其通知需要更新人们箱视图PropertyChanged事件。
当然,这将是更清洁,如果你正确地实现了MVVM设计模式。我喜欢为此使用MVVM Light工具包。
我知道这是啰嗦,但我想引导你下了正确的路径,所以你能在这个项目上运用这些知识和未来:)
谢谢您的回答,但如果我想打这从DataContext的 ADONET实体数据模型 当我给物品来源,以组合框什么我给数据绑定 – deneme 2011-05-27 15:16:06
我强烈建议你做一些研究的MVVM的设计模式。基本上你有一个视图模型,你可以将视图(XAML)绑定到。在这个视图模型中,您将拥有UI元素将绑定到的集合。在您的视图模型,你会填充这些藏品与任何从实体框架来。检查出来,它会让你的编码清洁和更容易:http://www.silverlight.net/learn/videos/silverlight-4-videos/mvvm-introduction/ – schummbo 2011-05-27 15:22:18