簡體   English   中英

根據用戶訪問級別隱藏和顯示菜單(工具)欄

[英]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中菜單可見性的更多信息:

WPF UserControl上下文菜單可見性綁定

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM