выберите элемент в System.Windows.Controls.ListView по сравнению с System.Windows.Forms.ListView - PullRequest
0 голосов
/ 11 августа 2011

В окнах формы легко выбрать элемент из списка:

myListView.items[index].selected = True;

на wpf это не то же самое. Я связываю список с myListView. В результате я не могу привести объект someClass к ListViewItem для вызова метода IsSelected. Другими словами это не будет работать:

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

потому что элемент не может рассматриваться как ListViewItem. Как я могу выбрать элементы тогда? Я могу выбрать все элементы, вызвав метод myListView.selectAll ().

как программно выбрать один объект в моем списке.

1 Ответ

4 голосов
/ 11 августа 2011

В большинстве случаев вы должны привязать выделение к какому-либо свойству вашего объекта. например,

<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]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...