2014-01-14 88 views
0

我有一個上下文菜單,當我激活上下文菜單支持並且在上下文菜單支持停用時不顯示時,我想顯示該菜單。當摺疊時WPF上下文菜單片段

爲此我已經申請到一個按鈕這個上下文菜單:

<Button.ContextMenu> 
    <ContextMenu> 
     <MenuItem Name="MyContextMenu" Header="Load To Stack" Visibility="Collapsed"> 
     <MenuItem Name="item0" Header="Stack 1" IsCheckable="False" Click="MenuItem_Click"/> 
     <MenuItem Name="item1" Header="Stack 2" IsCheckable="False" Click="MenuItem_Click"/> 
     <MenuItem Name="item2" Header="Stack 3" IsCheckable="False" Clic="MenuItem_Click"/> 
     <MenuItem Name="item3" Header="Stack 4" IsCheckable="False" Click="MenuItem_Click"/> 
     </MenuItem> 
    </ContextMenu> 
</Button.ContextMenu> 

我通過這個功能設置的主上下文菜單項的可見性:

public bool ContextMode 
    { 
     get { return StackMode; } 
     set 
     { 
      if (value) 
       MyContextMenu.Visibility = Visibility.Visible; 
      else 
       MyContextMenu.Visibility = Visibility.Collapsed; 
     } 
    } 

如果能見度是摺疊保持這個片段: enter image description here

我也試圖停用整個上下文菜單,但這是行不通的。 上下文菜單已禁用,我嘗試讓其彈出上下文菜單不顯示。 如果我在嘗試獲取停用的c-m後激活了上下文菜單,則會顯示兩個菜單。

也許任何人都知道如何擺脫所示的片段。

+0

你能解釋一下_I也試圖停用整個上下文菜單,但那不起作用。上下文菜單是否被取消激活,我嘗試讓它彈出上下文菜單不顯示up_?這是如果你禁用它,應該發生的事情。你想在這裏做什麼?關閉菜單?隱藏其內容?結果應該是什麼? – dkozl

+0

ContextMenu應該是不可見的。取消激活上下文菜單的工作。但是,如果您激活它,則會顯示如此多的菜單,因爲您嘗試在停用菜單時顯示菜單的次數。我只是想讓它看得見和看不見。而已。 – marcel

回答

1

您需要處理ContextMenuOpening事件擁有FrameworkElement的:

<Button Name="Button" 
     Content="Test" 
     VerticalAlignment="Center" 
     HorizontalAlignment="Center" 
     Padding="10" 
     Click="ButtonBase_OnClick"> 
    <Button.ContextMenu> 
     <ContextMenu> 
      <MenuItem Name="Item0" Header="Load To Stack"> 
       <MenuItem Name="SubItem0" Header="Stack 1" IsCheckable="False"/> 
       <MenuItem Name="SubItem1" Header="Stack 2" IsCheckable="False"/> 
       <MenuItem Name="SubItem2" Header="Stack 3" IsCheckable="False"/> 
       <MenuItem Name="SubItem3" Header="Stack 4" IsCheckable="False"/> 
      </MenuItem> 
     </ContextMenu> 
    </Button.ContextMenu> 
</Button> 

和代碼隱藏:

private bool _contextMenuEnabled; 

public MainWindow() 
{ 
    _contextMenuEnabled = true; 
    InitializeComponent(); 
    Button.ContextMenuOpening += Button_ContextMenuOpening; 
} 

void Button_ContextMenuOpening(object sender, ContextMenuEventArgs e) 
{ 
    e.Handled = !_contextMenuEnabled; 
} 

private void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
{ 
    _contextMenuEnabled = !_contextMenuEnabled; 
} 
+0

它沒關係,如果它摺疊了。但是,如果我嘗試在摺疊後獲取上下文菜單,則如果我激活菜單,則菜單會出現兩次。 – marcel

+0

就是這樣,按原樣運作。我從來沒有想過這是關於開幕式。 – marcel