2011-04-25 140 views
0

我有一个客户的组合框,该客户可以在1个以上的类别,所以我用一个列表框包含所有类别的复选框...绑定ischecked选择wpf列表框中的复选框已更改组合框

在客户的选择变化,在特定的客户,应检查类别和所有其他类别应处于未选中状态..

这里是我的.dbml文件

enter image description here

这里是列表框的我的XAML代码...

<ListBox Height="113.88" Margin="399.342,125.543,424.66,0" Name="lst_category" VerticalAlignment="Top" SelectedValuePath="CategoryID"> 
      <ListBox.ItemTemplate> 
       <HierarchicalDataTemplate> 
       <CheckBox Content="{Binding CategoryName}"/> 
      </HierarchicalDataTemplate></ListBox.ItemTemplate> 
     </ListBox> 

我觉得我应该在复选框... 的结合在房地产器isChecked使用相关源代码,但我不知道如何使用它,请帮助我。 .. 如果有一些其他的解决方案,这比你让我知道..提前 谢谢...

回答

2

解决方案1: 创建一个类CategoryViewModel这样的:

class CategoryViewModel : INotifyPropertyChanged 
{ 
    public Category Category {get ... set ...} 
    public bool IsChecked {get ... set ...} //true if Category belongs to currently selected contact 
} 

将您的UI绑定到ViewModel类,该类包含每当更改选定联系人时都会计算出的CategoryViewModel的列表。

基本上是:

class ViewModel : INotifyPropertyChanged 
{ 
    public Contact SelectedContact { get .... set ....} 

    //list of all possible categories (the ones belonging to SelectedContact will have IsChecked true 
    public ObservableCollection<CategoryViewModel> Categories 
    { 
     get .... set .... 
    } 
} 

绑定你的列表框上方ViewModel.Categories财产。

SelectedContact应绑定到当前选定的联系人。 当它改变时,在setter中,你重新创建Categories列表。

解决方案2:使用一些转换器(不会推荐它认为,因为它不是MVVM)