2012-10-20 5 views
7

CheckBoxのWPFアプリケーションでListViewがあります。WPFでリストビューのチェックされた行の値を

私はWPFリスト内のすべてのチェックの行の値を保存したい...

私はこれをどのように達成することができますか?

私のListView

<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> 

答えて

6

IsCheckedプロパティは、ListViewItemのIsSelectedに直接バインドできます。要素にバインドするには、RelativeSourceを使用します。リストビューのためSelectionMode=Multipleを使用する場合

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

さて、あなたは直接SelectedItemsを使用してチェックされた項目を引くことができます。チェックボックスにこれを追加した後、私は、リストビューににisChecked = "{= {RelativeSource AncestorType =のListViewItem}、パス= IsSelectedバインディングRelativeSource}" を追加した

var chapters = new List<Chapter>(); 
foreach (var item in listViewChapter.SelectedItems) 
    users.Add((Chapter)item); 
+0

... 今私は、行の値をチェック取得する方法.. –

+0

単一のチェックボックスのみチェックし、複数のチェックボックスをオンにしたい –

0

あなたのWPFアプリケーションのMVVM pattern、およびif you're going to use MVVM then you'll want an MVVM frameworkを使用することを検討すべきです。

次に、データバインドされたオブジェクトを表すタイプ(例:Book)を作成し、ビューモデルにこのタイプのコレクション(例:ObservableCollection<Book> Books)を設定します。

たとえば、Book型のSelectedブール値プロパティを、ListBox ItemTemplateのCheckBoxのIsCheckedプロパティにバインドします。

<CheckBox IsChecked="{Binding Selected}" /> 
あなたは目的のために純粋にオブジェクトを Bookタイプを強化し、整形 BookViewModelタイプを作成することができますので、純粋にUI( Selected)のために使用されるプロパティを使用して、ドメインオブジェクト( Book)をpoluteしたくないかもしれません

ビューの

関連する問題