wpf 设置样式中的menuItem图标

2wnc66cl  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(343)

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

Image = new BitmapImage(uri);

在我的风格我有

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

但是menuItem将uri显示为字符串,而图标应该在字符串中。

w8ntj3qf

w8ntj3qf1#

没有太多的答案,但我能够使用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>

然而,我确实想知道为什么明显的没有工作。

相关问题