Проверено и снято все элементы listview на основе 1-го элемента listview.
Привет,
У меня есть сценарий типа ListView с флажками, 1-й вариант будет "выбрать все" на 1-м элементе установлен флажок я должен проверить все элементы в списке, а на 1-м элементе снят флажок я должен снять все элементы. и если предположим, что выбраны все элементы, и я снял галочку с любого другого, кроме 1-го(2-го, 3-го), то 1-й элемент должен быть снят.
Что я уже пробовал:
<Window.Resources> <ControlTemplate x:Key="ItemTemplate" TargetType="ListViewItem"> <Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}" SnapsToDevicePixels="True"> <ContentPresenter Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" HorizontalAlignment="{TemplateBinding Control.HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding Control.VerticalContentAlignment}" SnapsToDevicePixels="{TemplateBinding UIElement.SnapsToDevicePixels}" /> </Border> </ControlTemplate> <Style TargetType="ListViewItem"> <Setter Property="Template" Value="{StaticResource ItemTemplate}" /> </Style> <DataTemplate x:Key="ItemDataTemplate"> <CheckBox x:Name="checkbox" Content="{Binding}" IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListViewItem}}, Path=IsSelected}" /> </DataTemplate> </Window.Resources> <Grid> <StackPanel> <ListView x:Name="checkedListView" SelectionMode="Multiple" ItemsSource="{Binding}" ItemTemplate="{StaticResource ItemDataTemplate}" CheckBox.Unchecked="OnUncheckItem" CheckBox.Checked="checkedListView_Checked"/> </StackPanel> </Grid>
public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); ObservableCollection<string> items = new ObservableCollection<string>(); items.Add("Item 1"); items.Add("Item 2"); items.Add("Item 3"); items.Add("Item 4"); items.Add("Item 5"); DataContext = items; } private void OnUncheckItem(object sender, RoutedEventArgs e) { //How to do ????; } int count = 0; private void checkedListView_Checked(object sender, RoutedEventArgs e) { //Somthing i tried //count bcoz of collection not allow me to modify. string str = checkedListView.SelectedItem.ToString(); if (str == "Item 1" && count == 0) { count++; checkedListView.SelectAll(); } } }
Плз, может ли кто-нибудь помочь, как это сделать?
Спасибо.