8

が付いたListViewWPFアプリケーションがありCheckBoxます。

チェックされたすべての行の値を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

プロパティをListViewItemIsCheckedのに直接バインドできます。要素にバインドするためにIsSelected使用します。RelativeSource

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

これで、ListViewに使用する場合、を使用SelectionMode=Multipleしてチェック済みアイテムを直接プルできます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、たとえばタイプのブールプロパティをListBoxItemTemplateBookのCheckBoxのプロパティにバインドします。IsChecked

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

Book純粋にUI()に使用されるプロパティでドメインオブジェクト()を汚染したくない場合は、タイプを拡張し、純粋にビューの目的でオブジェクトの形状を変更するタイプをSelected作成できます。BookViewModelBook

于 2012-10-20T08:19:20.223 に答える