Wpf ViewList,当选择一行时,如何设置check box = isChecked为true?

时间:2016-03-30 18:12:53

标签: wpf

当您选择一行作为用户时,我可以使用一些建议将checkBox设置为isChecked = true。创建了一个Listview,它有一些GridViewColumns。其中一个Columns里面有一个checkBox。它看起来像这个图像:

Image of my viewList

用户可以通过单击CheckBox内部来设置所选项,这没关系。我还想要的是,当用户选择一行时,如蓝色一行,应该选中复选框(蓝色时选中,如果取消选择它则取消选择)

在我的客户模型中,我有一个使用INotifyPropertyChanged事件的属性。

// Room Selected property.
    public bool Selected
    {
        get
        {
            return isChecked;
        }
        set
        {
            isChecked = value;
            OnPropertyChanged("Selected");
        }
    }

我正在使用此属性来查看用户在我的应用程序中进一步单击时所选择的内容。

你能做一些聪明的事情,所以我仍然把财产保留给CustomerModel?

ListView代码

<ListView Height="250" Width="Auto" ItemsSource="{Binding CustomerList}" Grid.Row="1" SelectionMode="Multiple" HorizontalAlignment="Center">
                    <ListView.ItemContainerStyle>
                        <Style TargetType="ListViewItem">
                            <Setter Property="HorizontalContentAlignment" Value="Center"/>
                        </Style>
                    </ListView.ItemContainerStyle>
                    <ListView.View>
                        <GridView >
                            <GridViewColumn Header="ID" Width="Auto">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Id}" TextAlignment="Center" Width="40"/>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                            <GridViewColumn DisplayMemberBinding="{Binding FirstName}" Header="First name" Width="130"/>
                            <GridViewColumn DisplayMemberBinding="{Binding LastName}" Header="Last name" Width="130"/>
                            <GridViewColumn DisplayMemberBinding="{Binding PhoneNumber}" Header="Phone" Width="130"/>
                            <GridViewColumn DisplayMemberBinding="{Binding Email}" Header="Email" Width="250"/>
                            <GridViewColumn Header="Selected" Width="Auto">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <CheckBox IsChecked="{Binding Selected}"></CheckBox>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                        </GridView>
                    </ListView.View>
                </ListView>

在ListView中加载的CustomerLits也是ObservableCollection类型。

美好的一天。

更新

尝试创建命令的开头。

SelectedChangeCommand = new RelayCommand(SelectedChangedCommand_DoWork, () => true);

// Selectionchanged Command
    void SelectedChangedCommand_DoWork(object obj)
    {

    }

现在我不太确定该怎么做..

1 个答案:

答案 0 :(得分:1)

您可以在XAML中完成所有操作。

将带有转换器的binview复选框属性的IsChecked设置为listview selectedItem。如果selectedItem为null,则返回false,否则返回true。

你最终会得到这样的东西:

    <ListView Height="250" Name="myListView" Width="Auto" ItemsSource="{Binding CustomerList}" Grid.Row="1" SelectionMode="Multiple" HorizontalAlignment="Center">

          ....

    <CheckBox IsChecked="{Binding ElementName=myListView, Path=SelectedItem, Converter={StaticResource MyConverter}"></CheckBox>

试一试:)