【问题标题】:Visual brush as an icon in the ContextMenu wpf作为 ContextMenu wpf 中的图标的视觉画笔
【发布时间】:2018-05-27 14:23:26
【问题描述】:

我想在我的 wpf 用户控件中使用 Visual Brush 作为上下文菜单中的图标(树视图)。

我有一个资源字典(单独的图标 xaml 文件),文件中的几行如下所示:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

<VisualBrush x:Key="Trashcan"
             Stretch="Uniform">

我已经合并了usercontrol中的字典,还检查了是否已经添加,可以在usercontrol xaml代码中访问。

usercontrol xaml(视图)中的代码如下,其中必须使用图标

 <ContextMenu x:Key=xxxxxxxx>
                <MenuItem Header="Delete" Command="{Binding xxxxxx, Source=xxxxxxx}" CommandParameter="{Binding}" IsEnabled="xxxxxxxxxx}" Icon="{StaticResource Trashcan}"/>
 </ContextMenu>

现在的问题是我无法在上下文菜单中看到图标,图片如下:

到目前为止,我已经尝试了此链接 Using MahApps Icons with ContextMenu 中给出的方法,但对我来说不太奏效。

除了上述链接中的方法之外,还有其他方法可用于在上下文菜单中将视觉画笔显示为图标。

注意:我不能使用 menuitem.icon -> 图像,因为我受到来自应用程序其他组件的限制。

注意:我不知道在此处说明 Form 托管我的 WPF 用户控件 是否重要。

【问题讨论】:

  • 你期待什么? ResourceDictionary中没有图片
  • 好的,是的,我也尝试将视觉画笔更改为图像,但没有成功。有什么解决办法吗?

标签: c# wpf contextmenu


【解决方案1】:

您需要将Image 设置为MenuItem.Icon

<MenuItem.Icon>
     <Image Style="{StaticResource Trashcan}"/>
</MenuItem.Icon>

在资源字典中为该图像定义样式:

<Style x:Key="Trashcan" TargetType="Image">
    <Setter Property="Source" Value="/ProjectName;component/Images/Trashcan.png"/>
    <Setter Property="Width" Value="24"/>
</Style>

补充:

如果您不能使用MenuItem.Icon,可以使用以下技巧:

<MenuItem.Header>
    <Grid>
        <TextBlock Text="........"/>
        <Image HorizontalAlignment="Left" Width="24" Margin="-24,0,0,0" 
               Style="{StaticResource Trashcan}"/>
    </Grid>
</MenuItem.Header>

【讨论】:

  • 我知道这就是为什么在我的问题中有一行:“我不能使用 menuitem.image,因为我有来自应用程序其他组件的限制。”使用画笔而不是图像背后的想法是它会在选择时改变颜色,但图像不会,我想在有选择时改变图标的​​颜色
  • 顺便说一句。如果您想更改图像颜色,有许多库可以在运行时对图像执行此操作。例如灰度效果
  • @stalbaig,在这种情况下,我认为您需要对您的代码中与 VisualBrush 相关的部分的问题进行一些编辑,或者询问另一个问题。看到这个帖子:social.msdn.microsoft.com/Forums/vstudio/en-US/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多