Shell 模板 10 中的视图模型
Shell ViewModel in Template10
我正在为我的项目使用带有汉堡菜单的模板 10。
要根据用户是否登录动态更改按钮,我想我会为 Shell 创建一个 ViewModel。不幸的是,DataContext 似乎没有正确定位到 ViewModel。
我已将数据上下文添加到 Shell.xaml,但绑定没有发挥作用。有没有更好的方法解决这个问题,还是我做错了什么。
Shell.xaml 个片段:
设置数据上下文:
<Page.DataContext>
<viewModels:ShellViewModel x:Name="ViewModel" />
</Page.DataContext>
将可见性绑定到视图模型:
<Controls:HamburgerButtonInfo AutomationProperties.Name="My Journey"
ClearHistory="False"
PageType="views:MyJourneyPage"
Visibility="{Binding LoggedIn, Converter={StaticResource BooleanToVisibilityConverter}}">
ShellViewModel 片段:
private bool _loggedIn;
public bool LoggedIn { get { return _loggedIn; } set { Set(ref _loggedIn, value); } }
Visual Studio 正在报告:
错误:BindingExpression 路径错误:在 'Template10.Controls.HamburgerButtonInfo' 上找不到 'LoggedIn' 属性。 BindingExpression: Path='LoggedIn' DataItem='Template10.Controls.HamburgerButtonInfo';目标元素是 'Template10.Controls.HamburgerButtonInfo' (Name='null');目标 属性 是 'Visibility'(类型 'Visibility')
它看不到视图模型的路径以及您为登录创建的 属性,Path = LoggedIn,DataContext= ViewModel,具体取决于您可能必须找到 DataContext 组合的深度。这很可能是由于 DataItem 现在看到的 DataContext,与它在汉堡包控件中所属的集合有关。
通过将可见性绑定更改为解决:
"{x:Bind Path=ViewModel.LoggedIn, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverterInverse}}"
我正在为我的项目使用带有汉堡菜单的模板 10。 要根据用户是否登录动态更改按钮,我想我会为 Shell 创建一个 ViewModel。不幸的是,DataContext 似乎没有正确定位到 ViewModel。
我已将数据上下文添加到 Shell.xaml,但绑定没有发挥作用。有没有更好的方法解决这个问题,还是我做错了什么。
Shell.xaml 个片段:
设置数据上下文:
<Page.DataContext>
<viewModels:ShellViewModel x:Name="ViewModel" />
</Page.DataContext>
将可见性绑定到视图模型:
<Controls:HamburgerButtonInfo AutomationProperties.Name="My Journey"
ClearHistory="False"
PageType="views:MyJourneyPage"
Visibility="{Binding LoggedIn, Converter={StaticResource BooleanToVisibilityConverter}}">
ShellViewModel 片段:
private bool _loggedIn;
public bool LoggedIn { get { return _loggedIn; } set { Set(ref _loggedIn, value); } }
Visual Studio 正在报告: 错误:BindingExpression 路径错误:在 'Template10.Controls.HamburgerButtonInfo' 上找不到 'LoggedIn' 属性。 BindingExpression: Path='LoggedIn' DataItem='Template10.Controls.HamburgerButtonInfo';目标元素是 'Template10.Controls.HamburgerButtonInfo' (Name='null');目标 属性 是 'Visibility'(类型 'Visibility')
它看不到视图模型的路径以及您为登录创建的 属性,Path = LoggedIn,DataContext= ViewModel,具体取决于您可能必须找到 DataContext 组合的深度。这很可能是由于 DataItem 现在看到的 DataContext,与它在汉堡包控件中所属的集合有关。
通过将可见性绑定更改为解决:
"{x:Bind Path=ViewModel.LoggedIn, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverterInverse}}"