снимите флажок SelectAll, если один из рядов не отмечен - PullRequest
0 голосов
/ 25 августа 2010

У меня есть проблема. Когда я проверяю SelectAllCheckBox все флажки флажок в ListView проверяется. Но когда я снял один из флажков строки, SelectAllCheckBox все еще проверен. Как снять флажок SelectAllCheckBox, если один из рядов не отмечен? И второй вопрос: как выделить строки ListView, когда установлен флажок SlectAllCheckBox?

Мой 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

1 Ответ

0 голосов
/ 25 августа 2010

Я думаю, что для решения проблемы с подсветкой, вам просто нужно убедиться, что ваш флажок в привязке TwoWay к свойству IsSelected.

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

Для флажка выбрать все есть несколько способов сделать это. Одним из способов было бы связать свойство IsChecked флажка, возможно, со свойством SelectedItems списка, а затем написать конвертер, который проверяет, равно ли количество выбранных элементов общему количеству строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...