我为我的GameViewModel
制作了一个视图我有一些像这样的xaml
<UserControl.Resources>
<DataTemplate DataType="{x:Type ViewModels:PlayerViewModel}">
<StackPanel>
<Button
Content="{Binding ?????}"
Command="{Binding WrongAnswerCommand}" />
<TextBlock
Text="{Binding Name}" />
</StackPanel>
</DataTemplate>
</UserControl.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
</Grid.RowDefinitions>
<ListBox Grid.Row="0"
ItemsSource="{Binding Players}"
IsSynchronizedWithCurrentItem="True">
</ListBox>
</Grid>
所以,这里是一个可观察的收集玩家。
我需要将按钮内容绑定到GameViewModel的属性。
我应该使用什么?
答案 0 :(得分:5)
基本上,您需要升级到更高级别才能获得完整视图模型。
像
这样的东西Content="{Binding DataContext.MyContentPropertyName,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type ListBox}}}"
或者
Content="{Binding DataContext.MyContentPropertyName,
RelativeSource={RelativeSource FindAncestor,
AncestorType={x:Type UserControl}}}"
其中MyContentPropertyName
是GameViewModel
中代表按钮内容的属性。
注意:从代码片段看,两个绑定似乎都会产生相同的结果,并将它们都添加到一个示例中,您可以选择要找到正确上下文的高度。