[英]Hiding and Showing menu (tool) bar based on user access level
我正在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'
您將需要綁定到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中菜單可見性的更多信息:
http://www.codeproject.com/Articles/37848/WPF-Data-Bound-Menus
您的密碼
MenuBar.Visibility="Visible";
是不正確的。
可見性是一種枚舉類型,而不是字符串。 您可以這樣設置:
MenuBar.Visibility =Visibility.Visible.
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.