设置样式中的menuItem图标



在我的DataContext中,我正在设置BitmapImage,例如

Image = new BitmapImage(uri);

按照我的风格,我有

<Setter Property="Icon" Value="{Binding Image, Mode=OneWay}" />

但是,menuItem将uri显示为图标所在的字符串。知道我错过了什么吗

答案不多,但我能够使用Loaded事件并在处理程序中设置Icons图像来解决这个问题。

void MenuItem_OnLoaded(object sender, RoutedEventArgs e)
{
var menuItem = (MenuItem)sender;
if (menuItem.DataContext is OptionMenuItemViewModel x)
menuItem.Icon = new Image { Source = new BitmapImage(x.ImageUri) };
}

使用以下XMAL

<MenuItem Header="_Database" ItemsSource="{Binding DataBaseMenuItemViewModels}" >
<MenuItem.ItemContainerStyle >
<Style TargetType="MenuItem" >
<EventSetter Event="Loaded" Handler="MenuItem_OnLoaded"/>
<Setter Property="Header" Value="{Binding Path=Title}" />
<Setter Property="ToolTip" Value="{Binding Path=ToolTip}" />
<Setter Property="Command" Value="{Binding Path=Command}" />
<Setter Property="CommandParameter" Value="{Binding Path=Message}" />
</Style>
</MenuItem.ItemContainerStyle>
</MenuItem>

然而,我当然想知道为什么显而易见的不起作用。

最新更新