我的应用程序中有一个ItemsControl。与ItemsControl关联的页面绑定到视图模型。视图模型包括两个属性:People和Options。对于每个人,我想在ComboBox中显示选项列表。选项在我的视图模型中定义。我的代码如下所示:
<ItemsControl ItemsSource="{Binding Path=People}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<ComboBox ItemsSource="Options" DisplayMemberPath="FullName" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
但是,因为每个Item代表一个Person,所以ComboBox正在查看Person对象中名为“Options”的属性。如何引用ComboBox的视图模型而不是Person?
谢谢!
答案 0 :(得分:2)
您可以使用以下技术
<ComboBox ItemsSource="{Binding ElementName=LayoutRoot, Path=DataContext.Options}" DisplayMemberPath="FullName" />
假设您的LayoutRoot的DataContext是View Model。如果没有,您可以为ItemsControl指定名称并将其用于ElementName。