2011-04-25 139 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)