我有一个基本的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
,它显示了人员集合。但现在我想要,地址为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>
答案 0 :(得分:1)
将SelectedItem
或SelectedValue
属性(取决于您实际绑定的内容)设置为地址。因此,如果您存储街道名称,那么您将拥有:
<DataTemplate>
<ComboBox ItemsSource="..."
DisplayMemberPath="StreetName"
SelectedValuePath="StreetName"
SelectedValue="{Binding Street}"/>
</DataTemplate>