我正在使用Visual Studio 2010 express中的WPF c#创建桌面应用程序。我创建了一个菜单栏,我想根据用户访问级别显示某些元素。我可以将菜单可见性设置为Hidden
作为默认设置,但是一旦成功登录,就很难将访问率设置为Visible
。下面是'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>
我尝试'C#代码'
public MainWindow()
{
InitializeComponent();
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
MenuBar.Visibility="Visible";
//Load and display sign in screen
App1 app = new App1();
app.LoadSignIn();
}
我面临的错误是:
无法将类型'string'隐式转换为'System.Windows.Visibility'
答案 0 :(得分:0)
您希望绑定到Style
Trigger
以获取此行为,如下所示(摘自下面的其中一个链接,修改为与您提供的xaml相匹配):
<Window.Resources>
<Style x:Key="VisibleWhenUserAllowedAccess" TargetType="MenuItem">
<Style.Triggers>
<DataTrigger Binding="{Binding IsUserAllowedAccess}" Value="False">
<Setter Property="Visibility" Value="Hidden"/>
</DataTrigger>
</Style.Triggers>
</Style>
<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>
更多关于在这两个链接中更改WPF中菜单可见性的阅读:
WPF UserControl Context Menu Visibility Binding
http://www.codeproject.com/Articles/37848/WPF-Data-Bound-Menus
答案 1 :(得分:0)
您的代码
MenuBar.Visibility="Visible";
不正确。
可见性是枚举类型而不是字符串。您可以这样设置:
MenuBar.Visibility =Visibility.Visible.