我有一个客户组合框,该客户可以在多个类别中,因此我使用了一个包含所有类别复选框的列表框...
关于客户的选择变更,应检查特定客户的类别,并且所有其他类别应保持未选中状态。
这是我的.dbml文件
这是我的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属性中使用绑定中的相对源... 但我不知道如何使用它请帮帮我... 如果有其他解决方案,请告诉我。 提前谢谢......
答案 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)