绑定在组合框的selectionchanged上检查wpf列表框中的复选框

时间:2011-04-25 07:19:18

标签: c# wpf binding checkbox

我有一个客户组合框,该客户可以在多个类别中,因此我使用了一个包含所有类别复选框的列表框...

关于客户的选择变更,应检查特定客户的类别,并且所有其他类别应保持未选中状态。

这是我的.dbml文件

enter image description here

这是我的listbox的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属性中使用绑定中的相对源... 但我不知道如何使用它请帮帮我... 如果有其他解决方案,请告诉我。 提前谢谢......

1 个答案:

答案 0 :(得分: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类,该类包含每当您更改Selected Contact时计算的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)