簡體   English   中英

如何綁定到視圖的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>

因此,我要尋找的是代替“第一個上下文 ”所必需的綁定語法,以使最里面的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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM