在System.Windows.Controls.ListView中选择项目与System.Windows.Forms.ListView进行比较

时间:2011-08-11 02:11:31

标签: c# wpf xaml listview selection

在Windows窗体中,可以轻松地从列表视图中选择项目:

myListView.items[index].selected = True;

在wpf上它不一样。我将List绑定到myListView。因此,我无法将someClass对象强制转换为ListViewItem以调用IsSelected方法。换句话说,这不起作用:

foreach (ListViewItem item in listView1.Items)
{
     item.IsSelected = true;
}

因为item不能被视为ListViewItem。我该如何选择项目?我可以通过调用myListView.selectAll()方法来选择所有项目。

如何在listviewaly上选择单个对象。

1 个答案:

答案 0 :(得分:4)

在大多数情况下,您应该将选择绑定到对象上的某个属性。 e.g。

<ListView Name="_lv" ItemsSource="{Binding Data}">
    <ListView.ItemContainerStyle>
        <Style TargetType="{x:Type ListViewItem}">
            <Setter Property="IsSelected" Value="{Binding IsSelected}" />
        </Style>
    </ListView.ItemContainerStyle>
</ListView>
class MyClass : INotifyPropertyChanged
{
    private bool _IsSelected = false;
    public bool IsSelected
    {
        get { return _IsSelected; }
        set
        {
            if (_IsSelected != value)
            {
                _IsSelected = value;
                OnPropertyChanged("IsSelected");
            }
        }
    }

    //...

    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string propertyName)
    {
        if (this.PropertyChanged != null)
        {
            this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}

然后在代码中设置该属性将选择项目:

foreach (MyClass item in Data)
{
    item.IsSelected = true;
}

您还可以操纵SelectedItems集合:

_lv.SelectedItems.Clear();
_lv.SelectedItems.Add(Data[4]);