как проверить, проверен ли элемент списка? - PullRequest
1 голос
/ 11 сентября 2010

Пользователь выбрал папку, содержащую файлы.Я делаю просмотр списка, отображающий файлы в выбранной папке.Я хочу показать, что содержит каждый файл, но я хочу показать его, когда пользователь проверяет файл из списка.Я использую следующий код:

if (listView1.Items[0].Checked == true)
{
   //....
}

Почему это не работает?Для чего я хочу использовать данные, например:

button1.Click(...) до button2.Click(...)?

Ответы [ 3 ]

4 голосов
/ 11 сентября 2010

Не совсем точно, что вы ищете, но есть несколько способов определить, какие элементы в ListView проверяются:

// This loops through only the checked items in the ListView.
foreach (ListViewItem checkedItem in listView1.CheckedItems) {
    // All these ListViewItems are checked, do something...
}

// This loops through all the items in the ListView and tests if each is checked.
foreach (ListViewItem item in listView1.Items) {
    if (item.Checked) {
        // This ListViewItem is Checked, do something...
    }
}

Вы можете использовать класс ListViewItem изучить детали каждого выбранного элемента.

1 голос
/ 11 сентября 2010

Какое событие вы захватываете?Помните, если это ItemCheck, вы не можете использовать listView1.Item[0].Checked, если этот элемент был тем, что было проверено / не отмечено.Вам необходимо принять параметр ItemCheckEventArgs и, используя e.Index, исключить этот элемент при проверке всех элементов списка.Используйте e.NewValue, чтобы отдельно оценить предмет, вызвавший событие ItemCheck.

0 голосов
/ 11 сентября 2010

Я бы создал хороший дизайн MVVM.ViewModel будет иметь ObservableCollection FileList, где File будет содержать любую информацию, которую вы хотите.Этот класс также будет иметь свойство IsFileSelectedUI, чтобы вы могли прямо в своем коде.Тогда в XAML все просто:

<ScrollViewer Grid.Column="0" Grid.Row="1" >
<ItemsControl ItemsSource="{Binding FileList}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Border BorderBrush="Gray" BorderThickness="1" Margin="2" Padding="2">
                <StackPanel Orientation="Horizontal">
                    <CheckBox IsChecked="{Binding IsFileSelectedUI , Mode=TwoWay}"/>
                    <TextBlock Text="{Binding FileName}"/>
                </StackPanel>
            </Border>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

Тогда все просто, как:

FileList.Where (file => file.IsFileSelectedUI)и т.д.

Если я понял, что вы сказали:)

...