Как получить проверенные элементы в WPF ListBox? - PullRequest
3 голосов
/ 26 марта 2010

У меня есть WPF ListBox, где у меня есть флажки, но как получить список проверенных элементов?

ListBox - это данные, привязанные к Dictionary<T>.

Вот XAML:

<Window x:Class="WpfApplication.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1"
        Height="300"
        Width="300">
    <Grid Margin="10">
        <ListBox ItemsSource="{DynamicResource Nodes}" Grid.IsSharedSizeScope="True" x:Name="MyList">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition SharedSizeGroup="Key" />
                            <ColumnDefinition SharedSizeGroup="Name" />
                            <ColumnDefinition SharedSizeGroup="Id" />
                        </Grid.ColumnDefinitions>
                        <CheckBox Name="NodeItem" Click="OnItemChecked">
                            <StackPanel Orientation="Horizontal">
                                <TextBlock Margin="2" Text="{Binding Value.Name}" Grid.Column="1"/>
                                <TextBlock Margin="2" Text="-" Grid.Column="2"/>
                                <TextBlock Margin="2" Text="{Binding Value.Id}" Grid.Column="3"/>
                            </StackPanel>
                        </CheckBox>
                    </Grid>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>
    </Grid>
</Window>

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

У Джоша Смита есть статья о проекте кода, которая должна объяснить, что вам нужно. Он обсуждает TreeView, но принцип перенесется и на CheckBox.

Существует также очень интересный подход здесь с использованием DataTemplate и привязкой свойства CheckBox.IsChecked к свойству ListBoxItem.IsSelected.

Если вы новичок в MVVM, Джейсон Долингер имеет отличное видео на эту тему. Это пошагово продвигает процесс перехода от использования кода за файлами к полному шаблону MVVM, включая внедрение зависимостей и тестирование.

2 голосов
/ 26 марта 2010

Обычно это делается с помощью ViewModel, то есть структуры данных, которая предоставляет представлению (через DataContext) как модель (ваши данные), так и информацию, относящуюся к представлению, например, проверен ли элемент или нет.

В вашем примере ваш словарь не будет, скажем, словарем, но словарь и PersonViewModel будут иметь свойство IsChecked и свойство Person, указывающее на модель.

В противном случае, вам нужно пойти и найти флажок в шаблонах или перейти к элементу списка из флажка, и это довольно быстро усложняется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...