2011-05-27 47 views
0
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;}} 

    } 

这是我的模型类Silverlight中添加绑定的控件

我有两个组合框在我form.Combo1和Combo2。 COMBO1 DisplayMember代码ValueMember标识
Combo2 DisplayMember名称ValueMember标识

我想,当我更改代码或名称的另一个组合框编辑值,显示值变化

回答

0

我推荐一些变化:

首先,你可能要打破你的人出类分为两类:代码和人

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工具包。

我知道这是啰嗦,但我想引导你下了正确的路径,所以你能在这个项目上运用这些知识和未来:)

+0

谢谢您的回答,但如果我想打这从DataContext的 ADONET实体数据模型 当我给物品来源,以组合框什么我给数据绑定 – deneme 2011-05-27 15:16:06

+0

我强烈建议你做一些研究的MVVM的设计模式。基本上你有一个视图模型,你可以将视图(XAML)绑定到。在这个视图模型中,您将拥有UI元素将绑定到的集合。在您的视图模型,你会填充这些藏品与任何从实体框架来。检查出来,它会让你的编码清洁和更容易:http://www.silverlight.net/learn/videos/silverlight-4-videos/mvvm-introduction/ – schummbo 2011-05-27 15:22:18

相关问题