C# 基于用户访问级别隐藏和显示菜单(工具栏)
我正在Visual Studio 2010 express中使用WPF c#创建一个桌面应用程序。我已经创建了一个菜单栏,我想根据用户访问级别显示某些元素。默认情况下,我可以将菜单可见性设置为C# 基于用户访问级别隐藏和显示菜单(工具栏),c#,wpf,controls,C#,Wpf,Controls,我正在Visual Studio 2010 express中使用WPF c#创建一个桌面应用程序。我已经创建了一个菜单栏,我想根据用户访问级别显示某些元素。默认情况下,我可以将菜单可见性设置为隐藏,但一旦成功登录后,我发现很难将可见性设置为可见。下面是“xaml”代码和c#代码的示例 “XAML代码” <Menu Name="MenuBar" VerticalAlignment="Top" Width="Auto" Margin="0,0,0,389"> <MenuIt
隐藏
,但一旦成功登录后,我发现很难将可见性设置为可见
。下面是“xaml”代码和c#代码的示例
“XAML代码”
<Menu Name="MenuBar" VerticalAlignment="Top" Width="Auto" Margin="0,0,0,389">
<MenuItem Header="_Maintenance" Margin="2,0,0,2" Width="Auto"
Visibility="hidden" Click="MenuItem_Click">
<MenuItem Header="Customer Maintenance"/>
<MenuItem Header="Staff Maintenance"/>
<MenuItem Header="User Maintenance"/>
<MenuItem Header="Item Maintenance"/>
<MenuItem Header="Standing Maintenance"/>
</MenuItem>
</Menu>
我面临的错误有:
无法将类型“string”隐式转换为“System.Windows.Visibility”
您需要绑定到
样式
触发器
以获得此行为,如下所示(摘自下面的链接之一,经过修改以匹配您提供的xaml):
有关更改WPF中菜单可见性的更多信息,请参见以下两个链接:
您的代码
MenuBar.Visibility="Visible";
这是不对的
可见性是枚举类型而不是字符串。您可以这样设置:
MenuBar.Visibility =Visibility.Visible.
你在应用程序中使用MVVM设计模式吗?嗨,科林,不,我没有,事实上我没听说过。这是我应该调查的事情吗?有没有一个好的地方,我可以寻找更多的信息,或者我应该只是谷歌?这是一个广泛使用的WPF设计模式。下面是一个介绍它的例子。如果你使用它,你的问题会很简单。希望能对你有所帮助。谢谢你,戴夫。我会让你知道你的建议。谢天谢地,这行不通——我昨晚看这篇文章时只是想确认一下。你是对的,它解决了他明确提出的问题,但不能解决他的实际问题。如果他从枚举中正确地分配了值,那么他会马上回来问“既然分配枚举不会改变可见性,我该如何让它工作?”。在大多数情况下,我倾向于同意对问题进行最少的回答,但在这种情况下,似乎应该采取下一步的回答。
<Menu Name="MenuBar" VerticalAlignment="Top" Width="Auto" Margin="0,0,0,389">
<MenuItem Header="_Maintenance" Margin="2,0,0,2" Width="Auto"
Click="MenuItem_Click"
Style="{StaticResource VisibleWhenFileIsOpen}">
<MenuItem Header="Customer Maintenance"/>
<MenuItem Header="Staff Maintenance"/>
<MenuItem Header="User Maintenance"/>
<MenuItem Header="Item Maintenance"/>
<MenuItem Header="Standing Maintenance"/>
</MenuItem>
</Menu>
MenuBar.Visibility="Visible";
MenuBar.Visibility =Visibility.Visible.