8

我有一个ListView带有CheckBox.

我想将所有 Checked 行的值保存在 WPF 列表中...

我怎样才能做到这一点?

我的列表视图

<ListView x:Name="listViewChapter" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" BorderThickness="0" SelectionMode="Single" Height="100" Margin="22,234,17,28" Grid.Row="1">
    <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" HorizontalAlignment="Left" VerticalAlignment="Center" >
                    <Label Name="lblChapterID" VerticalAlignment="Center"  Margin="0" Content="{Binding ChapterID}" Visibility="Hidden" />
                    <CheckBox Name="chkChapterTitle" VerticalAlignment="Center" Margin="0,0,0,0" Content="{Binding ChapterTittle}" Checked="chkChapterTitle_Checked" />
                </StackPanel>
            </DataTemplate>
    </ListView.ItemTemplate>
</ListView>
4

2 回答 2

11

您可以将IsChecked属性直接绑定到IsSelectedListViewItem。用于RelativeSource绑定到元素。

IsChecked="{Binding RelativeSource={RelativeSource AncestorType=ListViewItem},Path=IsSelected}"

现在,如果您使用SelectionMode=MultipleListView,您可以直接使用SelectedItems.

var chapters = new List<Chapter>();
foreach (var item in listViewChapter.SelectedItems)
    users.Add((Chapter)item);
于 2012-10-20T08:59:02.900 回答
0

您应该考虑为您的 WPF 应用程序使用MVVM 模式如果您要使用 MVVM,那么您将需要一个 MVVM 框架

然后,创建一个表示您的数据绑定对象的类型(例如),然后在您的视图模型(例如)Book上拥有该类型的集合。ObservableCollection<Book> Books

Selected然后,您可以将例如类型上的布尔属性绑定到 ListBox ItemTemplate 中Book的 CheckBoxIsChecked属性。

<CheckBox IsChecked="{Binding Selected}" />

您可能不想Book使用纯粹用于 UI () 的属性来污染您的域对象 ( Selected),因此您可以创建一个BookViewModel类型来增强Book类型并仅出于视图的目的重塑对象。

于 2012-10-20T08:19:20.223 回答