C# UWP页面和CommandBar中的多个DataContext绑定
我需要将UWP页面中的某些特定元素绑定到与页面不同的VIewModel。C# UWP页面和CommandBar中的多个DataContext绑定,c#,data-binding,uwp,C#,Data Binding,Uwp,我需要将UWP页面中的某些特定元素绑定到与页面不同的VIewModel。 因此,在我的页面中,我绑定到一个DataContext: <Page DataContext="{Binding RootViewModel, Source={StaticResource Locator}}"> ... ... 我现在正尝试将bottomAppBar命令栏绑定到另一个ViewModel: <Page.BottomAppBar> <Comman
因此,在我的页面中,我绑定到一个DataContext:
<Page
DataContext="{Binding RootViewModel, Source={StaticResource Locator}}">
...
...
我现在正尝试将bottomAppBar命令栏绑定到另一个ViewModel:
<Page.BottomAppBar>
<CommandBar DataContext="{Binding OtherViewModel, Source={StaticResource Locator}}">
<CommandBar.Content>
<TextBlock Text="{Binding Status}"></TextBlock>
但它不起作用,绑定不会出现在命令栏中。
为什么?根据设计,
CommandBar
的DataContext
无法传递到其内容中。实际上,只有子元素的DataContext
属性将自动获得与其父元素相同的DataContext
,除非您通过为其指定另一个值来专门中断流
在您的情况下,CommandBar
的DataContext
将是OtherViewModel
,但Content
属性将保持null
因此,与其手动设置DataContext
,不如改为设置其内容
<CommandBar Content="{Binding OtherViewModel, Source={StaticResource Locator}}">
<CommandBar.ContentTemplate>
<DataTemplate>
<TextBlock Text="{Binding Status}"></TextBlock>
</DataTemplate>
</CommandBar.ContentTemplate>
...
</CommandBar>
...
对匿名的懦夫否决投票人说:你为什么否决投票?请留下评论。