Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Template10中的Shell ViewModel_C#_Xaml_Win Universal App_Uwp_Template10 - Fatal编程技术网

C# Template10中的Shell ViewModel

C# Template10中的Shell ViewModel,c#,xaml,win-universal-app,uwp,template10,C#,Xaml,Win Universal App,Uwp,Template10,我正在为我的项目使用带有汉堡菜单的模板10。 要根据用户是否登录动态更改按钮,我想我应该为Shell创建一个ViewModel。不幸的是,DataContext似乎没有正确地针对ViewModel 我已经将数据上下文添加到Shell.xaml中,但是绑定并没有起作用。有没有更好的办法,或者我做错了什么 Shell.xaml代码段: 设置数据上下文: <Page.DataContext> <viewModels:ShellViewModel x:Name="Vie

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

我已经将数据上下文添加到Shell.xaml中,但是绑定并没有起作用。有没有更好的办法,或者我做错了什么

Shell.xaml代码段:

设置数据上下文:

<Page.DataContext>
        <viewModels:ShellViewModel x:Name="ViewModel" />
</Page.DataContext>
Visual Studio正在报告:
错误:BindingExpression路径错误:在“Template10.Controls.HamburgerButtonInfo”上找不到“LoggedIn”属性。BindingExpression:Path='LoggedIn'DataItem='Template10.Controls.HamburgerButtonInfo';目标元素是'Template10.Controls.HamburgerButtonInfo'(Name='null');目标属性为“可见性”(键入“可见性”)

它看不到viewmodel的路径以及您为登录创建的属性,path=LoggedIn,DataContext=viewmodel,具体取决于您可能必须找到DataContext组合的深度。这很可能是由于DataItem现在看到的DataContext与hamburger控件中它所属的集合相关。

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

 "{x:Bind Path=ViewModel.LoggedIn, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverterInverse}}"
private bool _loggedIn;
public bool LoggedIn { get { return _loggedIn; } set { Set(ref _loggedIn, value); } }
 "{x:Bind Path=ViewModel.LoggedIn, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverterInverse}}"