У меня есть ListView, который содержит список имен, каждое имя происходит от привязки к объекту, содержащему поле «имя», как это:Bind ListView выбранного элемента DataGrid
public class User {
public User() {}
public User(string name, int ID) {
this.name = name;
this.ID = ID;
}
public string name {set; get;}
public int ID {set; get;}
}
и ListView :
<ListView Margin="10" Name="lvName" DisplayMemberPath="name"/>
и в коде позади я поставил lvName.ItemSource к ObservableCollection объектов пользователя, в коллекции у меня есть пользователи, которые могут иметь одинаковые имена, но не тот же идентификатор.
У меня также есть dataGrid с двумя определенными столбцами (один для имени и один для ID), я хочу сделать так, чтобы, когда пользователь выбирает строку из списка (которая показывает имена пользователей), datagrid будут заполнены всеми объектами User (как имя, так и идентификатор), которые имеют то же имя, которое было выбрано в списке.
как я могу это сделать?
Примечание: мне удалось связать имя поля к TextBlock, делая это:
Text="{Binding SelectedItem.name, ElementName=lvName}"
, но я понятия не имею, как это сделать на сетке, не говоря уже с полем ID, а также поле имени.
Это потрясающе, к сожалению, я не использую шаблон MVVM в этом проекте, есть ли способ сделать это без него? – Stacker
@Stacker: фактически, модель просмотра - это всего лишь контейнер для 3 свойств: исходная коллекция, ее отфильтрованное представление и выбранный элемент. Вы можете хранить все это в коде позади и использовать событие «ListView.SelectionChanged» вместо привязки. – Dennis