在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上选择单个对象。
答案 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]);