ListBox CheckBox使用MVVM进行IsChecked绑定

时间:2010-02-18 13:13:08

标签: wpf data-binding mvvm checkbox listbox

我正试图想出一种方法来绑定我的CheckBox IsChecked属性。基本上,我有一个ListBox绑定的项目列表。当用户选中该框时,将调用一个命令并将该项添加到集合中。

但是,如果我想以编程方式选择列表中的项目,该怎么办?我希望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>

1 个答案:

答案 0 :(得分: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>

希望我能正确得到你的问题:)。

干杯