2017-10-10 129 views
0

我目前正在嘗試創建一個動態創建的上下文菜單。我目前將ObservableCollection<MenuItem>綁定到上下文菜單上的ItemsSource屬性。我現在想要在菜單打開時設置列表中項目的可見性,具體取決於我所選擇的項目。
我試圖從MenuItem繼承這樣在菜單上設置屬性的菜單項打開

public class CtContextMenuItem : MenuItem 
{ 
    public delegate Visibility VisibilityDelegate(); 
    public VisibilityDelegate IsVisibleDelegate = null; 
} 

而且我想在上下文菜單打開時設置VisibilityVisibilityDelegate的結果,但我找不到那個叫上MenuItem任何事件或方法當上下文菜單打開
有沒有辦法做到這一點,或者它是否我只需要創建一個函數內的所有菜單項,在ContextMenuOpening

+0

* 「聽的ContextMenuOpening」 * - 是的。枚舉菜單項並直接或通過屬性調用該委託(如果使用數據模板綁定)。考慮添加一點[mvvm](https://stackoverflow.com/q/15566824/1997232)而不是使用自定義控件。 – Sinatr

回答

0

綁定ItemsSourceObservableCollection<CtContextMenuItem>其中CtContextMenuItem類型有一個Visibilitybool財產,你可以在你的XAML綁定。事情是這樣的:

public class CtContextMenuItem 
{ 
    public Visibility IsVisible { get; set; } 
} 

<ContextMenu ItemsSource="{Binding TheSourceCollection}"> 
    <ContextMenu.ItemContainerStyle> 
     <Style TargetType="MenuItem"> 
      <Setter Property="Visibility" Value="{Binding IsVisible}" /> 
     </Style> 
    </ContextMenu.ItemContainerStyle> 
</ContextMenu>