2012-10-20 31 views
7

Tôi có một ListView trong ứng dụng WPF với CheckBox.Cách nhận giá trị Hàng đã kiểm tra của một ListView trong WPF

Tôi muốn lưu các giá trị của tất cả các hàng Đã bắt đầu một danh sách WPF ...

Làm thế nào tôi có thể đạt được điều này?

ListView My

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

Trả lời

6

Bạn có thể liên kết trực tiếp thuộc tính IsChecked với IsSelected của ListViewItem. Sử dụng RelativeSource để liên kết với phần tử.

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

Bây giờ nếu bạn sử dụng SelectionMode=Multiple cho ListView, bạn có thể kéo các mục kiểm tra trực tiếp sử dụng SelectedItems.

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

tôi đã thêm IsChecked = "{Binding RelativeSource = {RelativeSource AncestorType = ListViewItem}, Path = IsSelected}" trong ListView .. Now Làm thế nào tôi có thể được kiểm tra hàng giá trị .. –

+0

Sau Thêm này trong CheckBox Chỉ kiểm tra một hộp kiểm tra duy nhất, tôi muốn hộp kiểm multilple kiểm tra .... –

0

Bạn nên xem xét sử dụng MVVM pattern cho các ứng dụng WPF của bạn, và if you're going to use MVVM then you'll want an MVVM framework.

Sau đó, sẽ là trường hợp tạo loại đại diện cho đối tượng dữ liệu của bạn (ví dụ: Book), sau đó có một bộ sưu tập loại này trên mô hình chế độ xem của bạn (ví dụ: ObservableCollection<Book> Books).

Sau đó, bạn sẽ liên kết một thuộc tính boolean Selected boolean ví dụ: trên loại Book của bạn vào thuộc tính của Hộp kiểm IsChecked trong ListBox ItemTemplate của bạn.

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

Bạn không thể muốn polute đối tượng tên miền của bạn (Book) với tính chất thuần túy sử dụng cho giao diện người dùng (Selected), vì vậy bạn có thể tạo ra một loại BookViewModel mà augments loại Book và reshapes đối tượng thuần túy nhằm mục đích của chế độ xem.

Các vấn đề liên quan