Member 12658724 Ответов: 1

Найти конкретный элемент listview в xaml?


Скажем, у меня есть listview.
<ListView Margin="10" Name="lvUsers" ItemsSource="{Binding People}">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Name}" />
            <GridViewColumn Header="Age" Width="50" DisplayMemberBinding="{Binding Age}" />
            <GridViewColumn Header="Mail" Width="150" DisplayMemberBinding="{Binding Mail}" />
        </GridView>
    </ListView.View>
</ListView> 

В Модель Представления
public ObservableCollection<Person> People { get; set; }

public ListView()
{
    InitializeComponent();

    this.People = new ObservableCollection<Person>();
    this.People.Add(new Person() { Name = "John Doe", Age = 42, Mail = "john@doe-family.com" });
    this.People.Add(new Person() { Name = "Jane Doe", Age = 39, Mail = "jane@doe-family.com" });
    this.People.Add(new Person() { Name = "Sammy Doe", Age = 7, Mail = "sammy.doe@gmail.com" }); 

}   

Это всего лишь демонстрация. В моем реальном коде у меня есть расширители слева от элементов. Я пропускаю его, так как это код длины. Теперь я хочу добавить controltemplate или кнопку что-то еще. Вызовите его, чтобы найти конкретный элемент для его расширения. Я знаю, что это может быть легко сделать в коде позади, если вы используете этот или этот.

Но можем ли мы сделать это в xaml? Я имею в виду добавить событие или вызвать что-то в controltemplate?

Что я уже пробовал:

Не знаю, как это сделать, нужен код.

Kenneth Haugland

Использовать IValueConverter и привязать его к расширителю и критериям поиска?

Graeme_Grant

Использовать CollectionViewSource и применить фильтр. Вы также можете сгруппироваться: [^]

ОБНОВЛЕНИЕ: "Теперь я хочу добавить панель управления или кнопку что-то. Вызовите его, чтобы найти конкретный элемент для его расширения. Я знаю, что это может быть легко сделать в коде позади, если вы используете это или это."

- Да, можешь. Я вижу, что вы привязываетесь к кодовой странице, а не к MVVM. Поэтому создайте общее событие щелчка кнопки в коде, прикрепите шаблон данных к вашим ресурсам xaml, поместите кнопку в шаблон и свяжите событие щелчка в xaml с методом в вашем коде позади. Теперь отправитель в код, метод, событие-это элемент из списка.

1 Ответов

Рейтинг:
9

PureNsanity

Два ответа:

1. Если вы собираетесь делать фильтр, основанный на выборе пользовательского интерфейса, то CollectionViewSource-это путь, о котором упоминал Graeme_Grant.

2. если человек, которого вы ищете, является существующим отношением к этому человеку, то наиболее подходящей реализацией является изменение PersonViewModel, чтобы содержать ссылки на этого человека.

public class PersonViewModel
{
    public PersonViewModel EmergencyContact { get; set; }

    ...
}


Затем свяжите кнопку с командой и передайте нужное свойство через CommandParameter.