【问题标题】:Shell ViewModel in Template10Template10 中的 Shell ViewModel
【发布时间】:2016-06-17 10:54:39
【问题描述】:

我正在为我的项目使用带有汉堡菜单的模板 10。 要根据用户是否登录动态更改按钮,我想我会为 Shell 创建一个 ViewModel。不幸的是,DataContext 似乎没有正确定位到 ViewModel。

我已将数据上下文添加到 Shell.xaml,但绑定没有发挥作用。有没有更好的方法来解决这个问题,还是我做错了什么。

Shell.xaml sn-ps:

设置数据上下文:

<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 sn-p:

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'(名称='null');目标属性是“可见性”(类型“可见性”)

【问题讨论】:

    标签: c# xaml win-universal-app uwp template10


    【解决方案1】:

    通过将可见性绑定更改为:

     "{x:Bind Path=ViewModel.LoggedIn, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverterInverse}}"
    

    【讨论】:

      【解决方案2】:

      它看不到视图模型的路径和您为登录创建的属性,Path = LoggedIn,DataContext= ViewModel,具体取决于您可能需要找到 DataContext 组合的深度。这很可能是因为 DataItem 现在看到的 DataContext 与它在汉堡控件中所属的集合有关。

      【讨论】:

        猜你喜欢
        • 2017-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多