1
我有兩個Context Menus
像下面,兩者都具有不同的控制的相同syntax
且資源。兩個上下文菜單分享圖標,但只有一個上下文菜單圖標顯示
<ContextMenu ItemsSource="{Binding Actions}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource MetroMenuItem}">
<Setter Property="Header" Value="{Binding Title}"/>
<Setter Property="ToolTip" Value="{Binding ToolTips}"/>
<Setter Property="Command" Value="{Binding Command}"/>
<Setter Property="Icon" Value="{Binding Icon}"/>
<Setter Property="CommandParameter" Value="{Binding CommandParameter}"/>
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
所有的工作正常,但只有問題與圖標。
視圖模型
我有一個像下面的屬性,
public Image Icon
{
get { return _Icon; }
set{ _Icon = value; NotifyPropertyChanged(); }
}
我初始化它像下面,
Icon = new Image
{
Source = new BitmapImage(new Uri(@"../images/ReIndex.png", UriKind.Relative)),
Height = 20,
Width = 20,
Margin = new Thickness(5)
};
的問題是,如果一個上下文菜單中顯示的圖標另一個不會。
我知道MenuItem.Icon
是Object
。所以我試圖直接使用BitmapImage
而不是Image
,但仍然有問題。
編輯/解決
添加類似下面的資源,
<Control.Resources>
<Image x:Shared="False" x:Key="Icon" Source="{Binding Icon}" Height="20" Width="20"/>
</Control.Resources>
然後我的上下文菜單看起來像下面,
<ContextMenu ItemsSource="{Binding Actions}">
<ContextMenu.ItemContainerStyle>
<Style TargetType="{x:Type MenuItem}" BasedOn="{StaticResource MetroMenuItem}">
<Setter Property="Header" Value="{Binding Title}"/>
<Setter Property="ToolTip" Value="{Binding ToolTips}"/>
<Setter Property="Command" Value="{Binding Command}"/>
<Setter Property="Icon" Value="{StaticResource Icon}"/>
<Setter Property="CommandParameter" Value="{Binding CommandParameter}"/>
</Style>
</ContextMenu.ItemContainerStyle>
</ContextMenu>
視圖模型現在
public BitmapImage Icon
{
get { return _Icon; }
set{ _Icon = value; NotifyPropertyChanged(); }
}
Icon = new BitmapImage(new Uri(@"../images/Pencil-01.png", UriKind.Relative));
要點是x:Shared="False"
在Image
控制。
如果有任何其他好的解決方案表示讚賞。