如何绑定到视图的 DataContext 而不是最里面的 DataContext?

How can I bind to the View's DataContext and not the innermost DataContext?

一些伪代码作为示例:

<UserControl>
    <UserControl.DataContext>
        <vm:MyViewModel />
    </UserControl.DataContext>

    <Grid>
        <StackPanel DataContext="{Binding SomeOtherContext}">
            <TextBlock Text="{Binding MyString}" />
            <Grid DataContext="THE FIRST CONTEXT">
                <TextBlock Text="{Binding PropertyFromFirstContext}" />
            </Grid>
        </StackPanel>
    </Grid>
</UserControl>

所以,我正在寻找的是代替“THE FIRST CONTEXT”所必需的绑定语法,以使最里面的 TextBlock 绑定拉动其 属性 从最外面的 DataContext,而不是中间的 StackPanel.

我发现像 this one 这样的示例建议在 TextBlock 绑定中执行此操作,但如果我在那里有大量控件,那就需要大量额外的编码。我宁愿在该特定范围内设置一个新的 DataContext,以便内部绑定语法更易于阅读。

尝试以下操作:

<UserControl x:Name="Parent">
    <UserControl.DataContext>
        <vm:MyViewModel />
    </UserControl.DataContext>

    <Grid>
        <StackPanel DataContext="{Binding SomeOtherContext}">
            <TextBlock Text="{Binding MyString}" />
            <Grid DataContext="{Binding DataContext, ElementName=Parent}">
                <TextBlock Text="{Binding PropertyFromFirstContext}" />
            </Grid>
        </StackPanel>
    </Grid>
</UserControl>