У меня есть базовое приложение MVVM WPF, которое показывает кучу информации, связанной с пользователем, в DataGrid
. В качестве примера я есть два класса (я упростил классы и не реализовали INotifyPropertyChanged
как в моем реальном приложении)WPF Поиск Datagrid Combobox
public class Address
{
public String StreetName { get; set; }
}
public class Person
{
public String Name { get; set; }
public String Street { get; set; }
}
Мои ViewModel
содержит два ObservableCollections
.
ObservableCollection<Person>
ObservableCollection<Address>
Я связываю ViewModel
к Window
и это показывает коллекцию человек просто отлично. Но теперь я хочу, адрес как ComboBox
и что пользователь может выбирать только значения из указанной выше коллекции адресов. Что-то вроде таблицы поиска.
Вот мой код XAML. Мне удалось, это показывает адресную коллекцию, но она не покажет мне фактическую запись из коллекции людей в качестве основной записи.
<DataGridTextColumn Header="Name" Binding="{Binding Name}"></DataGridTextColumn>
<DataGridTextColumn Header="Street" Binding="{Binding Street}"></DataGridTextColumn>
<DataGridTemplateColumn>
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ComboBox ItemsSource="{Binding DataContext.addresses, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:MainWindow}}}" DisplayMemberPath="StreetName">
</ComboBox>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
Я не понимаю, если я теперь должен использовать 'SelectedItem' или' SelectedValue'. Я не могу ни работать, ни работать. –
@HansVader, к чему вы хотите привязать? Весь адресный объект или просто название улицы (например)? – ChrisF
Я просто хочу привязываться к полю 'Street' объекта' Person'. –