Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.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# 如何在WPF中选中listview中的行以及选中listview中的行_C#_Wpf_Listview_Checkbox - Fatal编程技术网

C# 如何在WPF中选中listview中的行以及选中listview中的行

C# 如何在WPF中选中listview中的行以及选中listview中的行,c#,wpf,listview,checkbox,C#,Wpf,Listview,Checkbox,我有一个listview并使用view作为gridview,如下所示: <ListView Grid.Row="1" Grid.Column="0" Height="100" HorizontalAlignment="Left" Margin="10,10,10,10" Name="listView2" VerticalAlignment="Top" Width="300" ItemsSource="{Binding}" SelectionChanged="listView2_Select

我有一个listview并使用view作为gridview,如下所示:

<ListView Grid.Row="1" Grid.Column="0" Height="100" HorizontalAlignment="Left" Margin="10,10,10,10" Name="listView2" VerticalAlignment="Top" Width="300" ItemsSource="{Binding}" SelectionChanged="listView2_SelectionChanged" SelectionMode="Multiple">
            <ListView.View>
                <GridView AllowsColumnReorder="True">

                    <GridViewColumn Header="Select">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <CheckBox  />
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

                    <GridViewColumn DisplayMemberBinding="{Binding Path=FirstName}" Header="First Name" Width="100"/>
                    <GridViewColumn DisplayMemberBinding="{Binding Path=LastName}" Header="Last Name" Width="100"/>

                </GridView>
            </ListView.View>    
        </ListView>

现在的问题是,当用户选中复选框时,记录应该被选中。此外,如果用户从列表中选择记录,则应选中相应的复选框


如何操作?

我假设您的视图模型具有IsSelected属性:

    public Boolean IsSelected
    {
        get { return isSelected; }
        set
        {
            if (isSelected != value)
            {
                isSelected = value;
                OnPropertyChanged("IsSelected");
            }
        }
    }
    private Boolean isSelected;
因此,让我们更改标记:

<ListView ItemsSource="{Binding}" SelectionMode="Multiple">
    <!-- add style for the item in list view: -->
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView AllowsColumnReorder="True">

            <GridViewColumn Header="Select">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <!-- bind the checkbox to the IsSelected property: -->
                        <CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>

            <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" Width="100"/>
        </GridView>
    </ListView.View>
</ListView>

我假设您的视图模型具有IsSelected属性:

    public Boolean IsSelected
    {
        get { return isSelected; }
        set
        {
            if (isSelected != value)
            {
                isSelected = value;
                OnPropertyChanged("IsSelected");
            }
        }
    }
    private Boolean isSelected;
因此,让我们更改标记:

<ListView ItemsSource="{Binding}" SelectionMode="Multiple">
    <!-- add style for the item in list view: -->
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="IsSelected" Value="{Binding IsSelected, Mode=TwoWay}"/>
        </Style>
    </ListView.ItemContainerStyle>
    <ListView.View>
        <GridView AllowsColumnReorder="True">

            <GridViewColumn Header="Select">
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <!-- bind the checkbox to the IsSelected property: -->
                        <CheckBox IsChecked="{Binding IsSelected, Mode=TwoWay}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>

            <GridViewColumn DisplayMemberBinding="{Binding Name}" Header="Name" Width="100"/>
        </GridView>
    </ListView.View>
</ListView>

最简单的方法:

      <GridViewColumn Header="None">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox Width="50"
                                      Height="50"
                                      IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}},
                                                          Path=IsSelected,Mode=TwoWay}" />

                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>

最简单的方法:

      <GridViewColumn Header="None">
                    <GridViewColumn.CellTemplate>
                        <DataTemplate>
                            <CheckBox Width="50"
                                      Height="50"
                                      IsChecked="{Binding RelativeSource={RelativeSource AncestorType={x:Type ListViewItem}},
                                                          Path=IsSelected,Mode=TwoWay}" />

                        </DataTemplate>
                    </GridViewColumn.CellTemplate>
                </GridViewColumn>