Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#如何选中listview上的所有复选框_C#_.net_Xaml_Checkbox - Fatal编程技术网

C#如何选中listview上的所有复选框

C#如何选中listview上的所有复选框,c#,.net,xaml,checkbox,C#,.net,Xaml,Checkbox,如何选中listview上的所有复选框 Listview xaml: <ListView x:Name="List" HorizontalAlignment="Left" Height="559" Margin="10,10,0,0" VerticalAlignment="Top" Width="607" Grid.ColumnSpan="2" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.Vertica

如何选中listview上的所有复选框

Listview xaml:

<ListView x:Name="List" HorizontalAlignment="Left" Height="559" Margin="10,10,0,0" VerticalAlignment="Top" Width="607" Grid.ColumnSpan="2" ScrollViewer.HorizontalScrollBarVisibility="Visible" ScrollViewer.VerticalScrollBarVisibility="Auto" IsMouseCapturedChanged="List_IsMouseCapturedChanged">
        <ListView.ContextMenu>
            <ContextMenu>
                <MenuItem Name="Dodaj" Header="Dodaj" Click="DodajUtwor_Click"/>
                <MenuItem Name="Usuń" Header="Usuń Zaznaczone" Click="UsuńUtwór_Click"/>
                <MenuItem Name="Clear" Header="Wyczyść Listę" Click="ClearList_Click"/>
                <MenuItem Name="Check" Header="Zaznacz Wszystkie" Click="SelectAll_Click"/>
            </ContextMenu>
        </ListView.ContextMenu>            
        <ListView.View>
            <GridView>
                <GridViewColumn Width="30" >
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal">
                                <CheckBox Name="CheckBox" Padding="10" IsChecked="{Binding IsChecked}"/>                           
                                <TextBlock Text="{Binding Data}"/>
                            </StackPanel>
                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>
                <GridViewColumn Header="Nazwa Pliku" Width="100" DisplayMemberBinding="{Binding Nazwa}" />
                <GridViewColumn Header="Tytuł" Width="100" DisplayMemberBinding="{Binding Tytuł}"/>
                <GridViewColumn Header="Wykonawca" Width="100" DisplayMemberBinding="{Binding Autor}"/>
                <GridViewColumn Header="Album" Width="100" DisplayMemberBinding="{Binding Album}"/>
                <GridViewColumn Header="Nr" Width="100" DisplayMemberBinding="{Binding Nr}"/>
                <GridViewColumn Header="Rok" Width="100" DisplayMemberBinding="{Binding Rok}"/>
                <GridViewColumn Header="Gatunek" Width="100" DisplayMemberBinding="{Binding Gatunek}"/>
                <GridViewColumn Header="Komantarze" Width="100" DisplayMemberBinding="{Binding Komentarze}"/>
                <GridViewColumn Header="Okładka" Width="100" DisplayMemberBinding="{Binding Okładka}"/>
                <GridViewColumn Header="Lokalizacja" Width="100" DisplayMemberBinding="{Binding Lokalizacja}"/>
            </GridView>
        </ListView.View>

    </ListView>
不要工作。
我想更改listviev中true上的所有复选框。我不知道如何使用循环foreach。如何删除在true上带有复选框的项目

我猜您可能正在“标题”列中查找一个复选框,并在选中“标题”复选框时选择所有网格项

我们可以使用简单的子/子视图模型来实现这一点。下面的代码可能有助于/解决您的问题

Xaml/视图代码-

<GridViewDataColumn DataMemberBinding="{Binding IsChecked}"  >
            <GridViewDataColumn.Header >
              <CheckBox HorizontalAlignment="Left" IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GridViewDataControl}}
                                                ,Path=DataContext.CheckAll}"
                        Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GridViewDataControl}}
                                                ,Path=DataContext.CheckAllCommand}"
                        CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}"  />
            </GridViewDataColumn.Header>
            <GridViewDataColumn.CellTemplate>
              <DataTemplate>
            <StackPanel Orientation="Horizontal">
                        <CheckBox Name="CheckBox" Padding="10" IsChecked="{Binding IsChecked}" Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type GridViewDataControl}}
                                                ,Path=DataContext.ItemCommand}" CommandParameter="{Binding}"/>
                        <TextBlock Text=y"{Binding Data}"/>
                    </StackPanel>
              </DataTemplate>
            </GridViewDataColumn.CellTemplate>
          </GridViewDataColumn>

您可以拥有如下所述的视图模型

class MainViewModel : Common.UserInterface.ViewModelBase, IDisposable
{
    public MainViewModel()
    {
        CheckAllCommand = new DelegateCommand<bool>(OnCheckAllExecuted);
    }

    void OnCheckAllExecuted(bool status)
    {
        // Your logic goes here (if any)    
        CheckAll = items.All(item => item.IsChecked);
    }

    public DelegateCommand<ItemViewModel> ItemCommand { get; private set; }

    private bool checkAll;
    private ObservableCollection<ItemViewModel> items;

    public DelegateCommand<bool> CheckAllCommand
    {
         get;
         private set;
    }

    public ObservableCollection<ItemViewModel> Items
    {
         get
         {
             return items;
         }
         set
         {
             items = value;
             OnPropertyChanged(() => Items); 
         }
     }


     public bool CheckAll
     {
         get { return checkAll; }
         set
         {
             checkAll = value;
             OnPropertyChanged(() => CheckAll);
         }
     }
}

class ItemViewModel : ViewModelBase 
{   
     public bool ischecked;
     public string data;

     public new bool IsChecked
     {
         get { return isChecked; }
         set
         {
             isChecked = value;
             OnPropertyChanged("IsChecked");
         }
     }

     public string Data
     {
         get { return data; }
         set
         {
             data = value;
             OnPropertyChanged("Data");
         }
     }
}
class MainViewModel:Common.UserInterface.ViewModelBase,IDisposable
{
公共主视图模型()
{
CheckAllCommand=新的DelegateCommand(oncheckalLexected);
}
已执行检查时无效(bool状态)
{
//你的逻辑在这里(如果有的话)
CheckAll=items.All(item=>item.IsChecked);
}
公共DelegateCommand项命令{get;private set;}
私人布尔支票;
私人可观测收集项目;
公共DelegateCommand CheckAllCommand
{
得到;
私人设置;
}
公共可观测收集项目
{
得到
{
退货项目;
}
设置
{
项目=价值;
OnPropertyChanged(()=>项目);
}
}
公共布尔校验
{
获取{return checkAll;}
设置
{
checkAll=值;
OnPropertyChanged(()=>CheckAll);
}
}
}
类ItemViewModel:ViewModelBase
{   
检查公共场所;
公共字符串数据;
公共新学校被检查
{
获取{return isChecked;}
设置
{
isChecked=值;
财产变更(“已检查”);
}
}
公共字符串数据
{
获取{返回数据;}
设置
{
数据=价值;
OnPropertyChanged(“数据”);
}
}
}

将绑定项上的
IsChecked
属性设置为
true
class MainViewModel : Common.UserInterface.ViewModelBase, IDisposable
{
    public MainViewModel()
    {
        CheckAllCommand = new DelegateCommand<bool>(OnCheckAllExecuted);
    }

    void OnCheckAllExecuted(bool status)
    {
        // Your logic goes here (if any)    
        CheckAll = items.All(item => item.IsChecked);
    }

    public DelegateCommand<ItemViewModel> ItemCommand { get; private set; }

    private bool checkAll;
    private ObservableCollection<ItemViewModel> items;

    public DelegateCommand<bool> CheckAllCommand
    {
         get;
         private set;
    }

    public ObservableCollection<ItemViewModel> Items
    {
         get
         {
             return items;
         }
         set
         {
             items = value;
             OnPropertyChanged(() => Items); 
         }
     }


     public bool CheckAll
     {
         get { return checkAll; }
         set
         {
             checkAll = value;
             OnPropertyChanged(() => CheckAll);
         }
     }
}

class ItemViewModel : ViewModelBase 
{   
     public bool ischecked;
     public string data;

     public new bool IsChecked
     {
         get { return isChecked; }
         set
         {
             isChecked = value;
             OnPropertyChanged("IsChecked");
         }
     }

     public string Data
     {
         get { return data; }
         set
         {
             data = value;
             OnPropertyChanged("Data");
         }
     }
}