繁体   English   中英

System.Windows.Controls.ListView 中的 select 项目与 System.Windows.Z6450242531912981C66AListView 比较。

[英]select item in System.Windows.Controls.ListView compared to System.Windows.Forms.ListView

在 windows forms 中,很容易将列表视图中的 select 项目设置为:

myListView.items[index].selected = True;

在 wpf 上是不一样的。 我将一个列表绑定到 myListView。 因此,我无法将 someClass object 转换为 ListViewItem 以调用 IsSelected 方法。 换句话说,这不起作用:

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

因为 item 不能被视为 ListViewItem。 我怎么能 select 项目呢? 我可以通过调用 myListView.selectAll() 方法来 select 所有项目。

如何以编程方式在我的列表视图上 select 单个 object 。

在大多数情况下,您应该将选择绑定到 object 上的某些属性。 例如

<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));
        }
    }
}

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

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

您还可以操作SelectedItems集合:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM