2011-07-20 30 views
0

我有以下代碼:一個gridview裏面查找複選框在WPF

<ListView Name="lvwYears" 
      Margin="0,32,191,29" 
      ItemsSource="{Binding Path=YearCollection}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn> 
       <GridViewColumnHeader> 
        <CheckBox Click="CheckBox_Checked" 
           HorizontalAlignment="Left" 
           Content="Year" 
           Padding="50,0,0,0" 
           Margin="20,0,0,0"></CheckBox> 
       </GridViewColumnHeader> 
       <GridViewColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox Click="CheckBoxIndividual_Click" 
            Name="cbxYears" 
            VerticalAlignment="Center" 
            Content="{Binding}" 
            HorizontalAlignment="Left" 
            Padding="50,0,0,0" 
            Margin="20,0,0,0" /> 
        </DataTemplate> 
       </GridViewColumn.CellTemplate> 
      </GridViewColumn> 
     </GridView> 
    </ListView.View> 

我想通過複選框進行迭代,並檢查他們時,在GridViewcolumnHeader複選框被選中。我試過使用VisualTree並失敗,我得到的錯誤是該元素必須是Visual或Visual3D。

任何幫助將不勝感激。謝謝!

+1

您的帳戶是數據傳輸。那麼,爲什麼你不檢查數據呢? –

+0

它僅由一個整數列表控制。 – triangulito

回答

2

檢查複選框沒有他們的IsChecked被綁定到某些東西沒有意義。用你的整數和布爾值將你的ItemsSource改爲一個結構集合。當複選框被選中時,迭代並設置所有的布爾值爲true。

如果你真的堅持讓你的整數列表就位,那麼作爲一個徹頭徹尾的攻擊,你可以使用每個複選框中的Loaded事件將其記錄在列表中,然後在頂部複選框被選中時檢查列表中的所有內容,但我不會推薦這個。

+0

謝謝,我已經將它綁定到了一個對象列表,但由於需求必須更改它。我只是要改回它,並解釋爲什麼它不會以這種方式工作。 – triangulito

+0

同意 - MVVM模式與正確使用數據綁定相結合,使得整個迭代控制的舊的skool方法變得多餘。 – slugster