2015-11-17 37 views
1

我有一個列表視圖用的ItemsSource設置爲LINQ查詢這樣如何複選框列添加到在WPF中ListView和獲得它的狀態

listViewPlan.ItemsSource = new ObservableEvents(query); 

結果的值的結果綁定到listView的列。 現在我想添加另一個包含複選框的列,以便用戶可以選擇列表視圖中的某些項目。所以我加了這個

  <GridViewColumn DisplayMemberBinding="{Binding select}"> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox Tag="select"/> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
       <GridViewColumnHeader Click="SortClick" Tag="select" Content="" /> 
      </GridViewColumn> 

這會在列表視圖中添加一個複選框列。但它並不受綁定結果中的任何內容的限制。所以我無法通過listViewPlan.Items [i]訪問複選框的當前狀態。我也不想在數據庫中添加一個bool到數據類型,因爲複選框表明一個用戶不應該被全局存儲在任何地方。我可以創建另一個類,類似於添加了複選框的bool的linq類。但是,我必須來回複製所有成員變量。我怎樣才能做到這一點?

+0

您可以在ViewModel上封裝對象,在ViewModel上公開您的「數據庫」對象,以便使用該綁定並創建一個Bool屬性來與複選框綁定 –

回答

1

您可以在列表框中使用多選模式並將CheckBox.IsChecked綁定到ListViewItem.IsSelected。

<DataTemplate x:Key="ListBoxItemTemplate"> 
    <CheckBox IsChecked="{Binding Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, 
                 AncestorType={x:Type ListViewItem}}, Path=IsSelected}" /> 
</DataTemplate> 
相關問題