Связывание ListBox CheckBox IsChecked с использованием MVVM - PullRequest
2 голосов
/ 18 февраля 2010

Я пытаюсь найти способ связать мою собственность CheckBox IsChecked.По сути, у меня есть список предметов, к которым привязан ListBox.Когда пользователь устанавливает флажок, вызывается команда, и этот элемент добавляется в коллекцию.

Однако что, если я хочу программно выбирать элементы в списке?Я хотел бы, чтобы элемент IsChecked основывался на том, существует ли элемент в списке в ViewModel.

Другими словами, если в моей модели представления я делаю что-то вроде vm.MySelectedItems.Add(thisItem),например, CheckBox будет Checked.

Возможно ли это, и если да, то как мне это сделать?

Спасибо.

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

1 Ответ

4 голосов
/ 18 февраля 2010

Создать 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>

Надеюсь, я правильно понял ваш вопрос :).

Приветствия

...