我有MenuItems的Visibility
屬性由轉換器控制。 MenuItems通常具有相同的可視性邏輯(相同的轉換器,相同的參數)。爲了避免重新輸入,我想將它們虛擬在一起,只設置一次可見性。如何將WPF ContextMenu中的MenuItem分組而不嵌套它們?
我知道我可以通過嵌套MenuItems來實現。有另一種方法嗎?
我有MenuItems的Visibility
屬性由轉換器控制。 MenuItems通常具有相同的可視性邏輯(相同的轉換器,相同的參數)。爲了避免重新輸入,我想將它們虛擬在一起,只設置一次可見性。如何將WPF ContextMenu中的MenuItem分組而不嵌套它們?
我知道我可以通過嵌套MenuItems來實現。有另一種方法嗎?
我不太清楚你想做什麼,但我懷疑風格會很方便。我會舉一個例子。在這裏我創建了一個有上下文菜單的網格按鈕。在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>
這將改變所有MenuItems的可見性。我只想改變分享其可見性狀態的MenuItems。 – mamuesstack 2013-03-22 10:53:11
夠公平的。你如何單獨應用該風格而不是風格影響所有MenuItems?還是我仍然誤解了這個問題? – 2013-03-22 13:59:16
我認爲如果我想要避免屬性,這就是要走的路。我更新了你的代碼片段。謝謝 – mamuesstack 2013-03-25 07:43:40
將它們綁定到一個propery。一旦財產發生變化,他們都會得到更新。 – 2013-03-22 10:07:22
好點!實際上,我希望只有XAML解決方案 – mamuesstack 2013-03-22 10:50:25
XAML只是一個不知道ViewModel的附加屬性。如果您不想使用ViewModel中的屬性,請將MenuItems綁定到依賴屬性。 – 2013-03-22 20:19:58