在我的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>
然而,我当然想知道为什么显而易见的不起作用。