2

我为我的 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>

所以,这里是一个可观察的集合 Players。

我需要将按钮内容绑定到 GameViewModel 的属性。

我应该使用什么?

4

1 回答 1

8

基本上,您需要更上一层楼才能获得完整的视图模型。

就像是

Content="{Binding DataContext.MyContentPropertyName, 
                  RelativeSource={RelativeSource FindAncestor, 
                                                 AncestorType={x:Type ListBox}}}"

或者

Content="{Binding DataContext.MyContentPropertyName, 
                  RelativeSource={RelativeSource FindAncestor, 
                                             AncestorType={x:Type UserControl}}}"

代表按钮内容MyContentPropertyName的属性在哪里。GameViewModel

注意:从片段看来,两个绑定都会产生相同的结果,将它们都添加以作为示例,您可以选择要查找正确上下文的高度。

于 2012-05-28T21:16:55.443 回答