我使用项模板来定义必须如何显示网格行。网格定义(简化)显示项目模板源是GridRows
(行的集合):
<grid ...>
(...)
<ScrollViewer
ItemTemplate="{StaticResource GridRowItemDataTemplate}"
ItemsSource="{Binding GridRows}" />
</ScrollViewer>
</grid>
到目前为止,非常好。
在项目模板中,文本框绑定到ImportZoneName
,当然已解决为GridRows[i].ImportZoneName
,这正是我想要的:
<DataTemplate x:Key="GridRowItemDataTemplate">
<Grid>
<TextBlock {Binding ImportZoneName}" />
<ComboBox
SelectedItem="{Binding SelectedModelingTypeValue}"
ItemsSource="{Binding ModelingTypes}" />
</Grid>
</DataTemplate>
现在出现问题:我还想将组合框绑定到我的视图模型的其他属性(ModelingTypes
)。此属性未以任何方式链接到GridRows。如何告诉WPF覆盖(或忘记)项目模板源?
很多,非常感谢!
顺便说一下,我还没有找到这些简单绑定案例的简单指南......如果有人有这样一个指南的链接,我将永远保佑他/她:)答案 0 :(得分:2)
您可以像这样获取父列表的DataContext
:
<DataTemplate x:Key="GridRowItemDataTemplate">
<Grid>
<TextBlock {Binding ImportZoneName}" />
<ComboBox
SelectedItem="{Binding SelectedModelingTypeValue}"
ItemsSource="{Binding DataContext.ModelingTypes,
RelativeSource={RelativeSource FindAncestor,
AncestorType=Grid}}" />
</Grid>
</DataTemplate>
将Grid
替换为您正在使用的网格类型(不确定它是什么,在问题中不明显),只要其DataContext
具有属性ModelingTypes
< / p>