2013-03-22 14 views
3

我有MenuItems的Visibility屬性由轉換器控制。 MenuItems通常具有相同的可視性邏輯(相同的轉換器,相同的參數)。爲了避免重新輸入,我想將它們虛擬在一起,只設置一次可見性。如何將WPF ContextMenu中的MenuItem分組而不嵌套它們?

我知道我可以通過嵌套MenuItems來實現。有另一種方法嗎?

+0

將它們綁定到一個propery。一旦財產發生變化,他們都會得到更新。 – 2013-03-22 10:07:22

+0

好點!實際上,我希望只有XAML解決方案 – mamuesstack 2013-03-22 10:50:25

+1

XAML只是一個不知道ViewModel的附加屬性。如果您不想使用ViewModel中的屬性,請將MenuItems綁定到依賴屬性。 – 2013-03-22 20:19:58

回答

1

我不太清楚你想做什麼,但我懷疑風格會很方便。我會舉一個例子。在這裏我創建了一個有上下文菜單的網格按鈕。在Button的資源中,我爲MenuItems創建了一個樣式(沒有命名)。在樣式中,您可以通過替換我創建的綁定來指定可見性應該如何表現。

<Window x:Class="StackOverflow.MainWindow" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
     <Button Content="Testing" VerticalAlignment="Center" HorizontalAlignment="Center"> 
      <Button.Resources> 
       <Style TargetType="{x:Type MenuItem}"> 
        <Setter Property="Visibility" Value="{Binding SomeBinding, Converter=SomeConverter}"/> 
       </Style> 
      </Button.Resources> 
      <Button.ContextMenu> 
       <ContextMenu> 
        <MenuItem Header="1"/> 
        <MenuItem Header="2"/> 
        <MenuItem Header="3"/> 
        <MenuItem Header="4"/> 
       </ContextMenu> 
      </Button.ContextMenu> 
     </Button> 
    </Grid> 
</Window> 
+0

這將改變所有MenuItems的可見性。我只想改變分享其可見性狀態的MenuItems。 – mamuesstack 2013-03-22 10:53:11

+0

夠公平的。你如何單獨應用該風格而不是風格影響所有MenuItems?還是我仍然誤解了這個問題? – 2013-03-22 13:59:16

+0

我認爲如果我想要避免屬性,這就是要走的路。我更新了你的代碼片段。謝謝 – mamuesstack 2013-03-25 07:43:40

相關問題