我有一个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引用视图模型?
谢谢!
您可以使用以下技术
<ComboBox ItemsSource="{Binding ElementName=LayoutRoot, Path=DataContext.Options}" DisplayMemberPath="FullName" />
假设你的LayoutRoot的DataContext是视图模型。如果没有,你可以给你的ItemsControl一个名字,并使用它的ElementName。