![](/img/trans.png)
[英]How can i bind a view(having datacontext of own viewmodel) with another viewmodel's property
[英]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.