C# 如何绑定到视图';s的DataContext而不是最里面的DataContext?

C# 如何绑定到视图';s的DataContext而不是最里面的DataContext?,c#,wpf,data-binding,datacontext,C#,Wpf,Data Binding,Datacontext,一些伪代码用作示例: <UserControl> <UserControl.DataContext> <vm:MyViewModel /> </UserControl.DataContext> <Grid> <StackPanel DataContext="{Binding SomeOtherContext}"> <TextBlock T

一些伪代码用作示例:

<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>

因此,我要寻找的是必要的绑定语法,以取代“第一个上下文”,从而使最内层的
TextBlock
绑定从最外层的
DataContext
提取其属性,而不是在中间的
StackPanel
中设置的属性

我发现类似的示例建议在
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>


SomeOtherContext是MyViewModel的属性吗?是的。它实际上是一个数据模型的实例。这实际上很好用。运行应用程序时,请确保所有属性都已初始化,并且输出中没有绑定错误。您的怀疑似乎是正确的…在我尚未注意到的无关绑定上抛出了一个错误。正在修复使此引用能够正常工作的问题。谢谢,投反对票,嗯?因为。。。?