[英]WPF DataGrid ComboBox binding to collection and selection in ViewModel
我有一个基本的MVVM WPF应用程序,该应用程序在DataGrid
显示了一堆与用户相关的信息。 我有两个类(我简化了类,但没有像在我的真实应用程序中那样实现INotifyPropertyChanged
)
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
,它显示了persons集合。 但是现在我想要将地址作为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
属性(取决于您实际绑定的对象)设置为该地址。 因此,如果您存储街道名称,那么您将拥有以下名称:
<DataTemplate>
<ComboBox ItemsSource="..."
DisplayMemberPath="StreetName"
SelectedValuePath="StreetName"
SelectedValue="{Binding Street}"/>
</DataTemplate>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.