2010-08-25 44 views
0

我遇到問題。當我檢查SelectAllCheckBox時,ListView中的所有複選框列被選中。但是當我取消選中一行復選框時,SelectAllCheckBox仍然被選中。如果取消選中某一行,如何取消選中SelectAllCheckBox?第二個問題是在選中SlectAllCheckBox時如何突出顯示ListView行?取消選中SelectAll如果其中一行未選中

我的XAML

<Window.Resources> 
    <DataTemplate x:Key="CheckBoxCell"> 
    <StackPanel Orientation="Horizontal"> 
     <CheckBox Name="chk" IsChecked="{Binding Path=IsSelected, 
     RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/> 
    </StackPanel> 
    </DataTemplate> 
</Window.Resources> 

    <StackPanel Name="Panel1" > 
    <StackPanel Grid.IsSharedSizeScope="True"> 
     <CheckBox Name="SelectAllCheckBox" Margin="5">Select All</CheckBox> 
    </StackPanel> 
    <ListView Name="ListView1" Background="#f8f8FF" BorderThickness="0" 
       ItemsSource="{Binding Path={}}" Visibility="Visible" Height="Auto" 
       GridViewColumnHeader.Click="GridViewColumnHeaderClickedHandler" 
       IsSynchronizedWithCurrentItem="True" 
       VerticalContentAlignment="Center" FontFamily="Tahoma" FontSize="12" 
       Grid.IsSharedSizeScope="False" > 
     <ListView.View> 
     <GridView AllowsColumnReorder="True" ColumnHeaderContainerStyle="{StaticResource HeaderStyle}"> 
      <GridViewColumn CellTemplate="{StaticResource CheckBoxCell}" Width="30"/> 
      <GridViewColumn ... /> 
      <GridViewColumn ... /> 
      <GridViewColumn ... /> 
     </GridView> 
     </ListView.View> 
    </ListView> 
    </StackPanel> 

和代碼背後

 Private Sub ListView1_SelectionChanged(ByVal sender As Object, ByVal e As System.Windows.Controls.SelectionChangedEventArgs) Handles ListView1.SelectionChanged 
    If ListView1.SelectedItems.Count > 0 Then 
     For i As Integer = 1 To ListView1.SelectedItems.Count 
     Dim TestDataRow As System.Data.DataRowView 
     TestDataRow = ListView1.SelectedItems(i - 1) 
     Next 
    End If 
    End Sub
+0

你問了同樣的問題兩次#3562968。請刪除其他問題。 – Zamboni 2010-09-05 15:53:24

回答

0

我認爲解決您的突出問題,你只需要確保您的複選框中綁定雙向的IsSelected屬性。

<CheckBox Name="chk" IsChecked="{Binding Path=IsSelected, Mode=TwoWay, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}}"/> 

對於選擇所有複選框,有幾種方法可以做到這一點。一種方法是將複選框的IsChecked屬性綁定到可能是列表視圖的SelectedItems屬性,然後編寫一個轉換器,檢查所選項目計數是否等於總行數。

相關問題