2010-02-18 128 views
2

我試圖找出一種方法來綁定我的CheckBoxIsCheckedIsChecked屬性。基本上,我有一個ListBox綁定到的項目列表。當用戶選中該框時,會調用一個命令並將該項添加到集合中。ListBox CheckBox IsChecked綁定使用MVVM

但是,如果我想以編程方式選擇列表中的項目呢?我希望IsChecked項目基於項目是否存在於ViewModel的列表中。

換句話說,如果在我的viewmodel中,我做了類似vm.MySelectedItems.Add(thisItem)的東西,我想CheckBoxChecked

這是可能的,如果是這樣,我應該怎麼做呢?

謝謝。

<ListBox.ItemTemplate> 
    <DataTemplate> 
     <WrapPanel> 
      <CheckBox IsChecked={Binding ???} /> 
      <TextBlock VerticalAlignment="Center" Text="{Binding Converter={StaticResource nameConverter}}" /> 
     </WrapPanel> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

回答

4

爲列表中的每個項目創建一個ViewModel。在你的例子中:vm.MySelectedItems.Add(thisItem)我們假設thisItem的類型是ListBoxItemViewModel。這種類型應該有一個叫IsChecked屬性,然後在XAML

<ListBox.ItemTemplate> 
    <!-- ViewModel: ListBoxItemViewModel --> 
    <DataTemplate> 
     <WrapPanel> 
      <CheckBox IsChecked={Binding IsChecked} /> 
      <TextBlock VerticalAlignment="Center" Text="{Binding Converter={StaticResource nameConverter}}" /> 
     </WrapPanel> 
    </DataTemplate> 
</ListBox.ItemTemplate> 

希望我得到妥善你的問題:)。

乾杯

+0

謝謝Anvaka,我也這麼想過,但覺得必須有更好的方法。如果這是最好的方式,我很樂意去做。感謝您的答覆。 – billb 2010-02-18 13:45:40

+0

我用這種方法去了,謝謝你的回答! – billb 2010-02-18 16:04:45

+0

很高興我可以幫助:)! – Anvaka 2010-02-18 16:11:40

相關問題