【问题标题】:WPF Control to ContextMenu Menu IconWPF 控件到 ContextMenu 菜单图标
【发布时间】:2015-06-09 22:59:17
【问题描述】:

设置

我在模板上有一系列拖放元素(WPF 控件)。当这些模板元素被堆叠时,我为用户提供了通过上下文菜单取消堆叠它们的能力。上下文菜单项是在我创建的扩展类的后面代码中生成的。

问题

我想提供一个元素的图像作为上下文菜单中的图标,在相应的菜单项标题旁边。目前我已经尝试了一系列解决方案,但都没有奏效。

尝试的解决方案

How can I convert a WPF control into an image?

Get a bitmap image from a Control view

MenuItem.Icon 采用可视对象。不幸的是,当我只是将我的元素(一个视觉元素)交给它时,它会爆炸,因为该元素是另一个视觉树的一部分。

所以我尝试克隆它,然后为其提供相同的 DataContext。哪个有效,有点。无需深入探讨,元素的大小与数据上下文绑定,因此很难从后面的代码中调整大小,而不会使它看起来像一个巨大的 hack。

期望的结果

我想渲染我的 WPF 控件的图像并将其分配给 MenuItem.Icon 属性。我还需要能够在后面的代码中做到这一点。

【问题讨论】:

  • 是不能改变作为绑定源的图片的视觉尺寸(宽高)的问题吗?你提到了几个目标,但问题对我来说不是很清楚。
  • 不,我只是想解释为什么不能将可视对象本身设置为 MenuItem.Icon。问题是我想将我的 WPF 控件转换为图像,然后适当缩放该图像,最后将其设置为 MenItem.Icon

标签: c# wpf


【解决方案1】:

要获取控件的图像,您可以使用 VisualBrush,将 Visual 绑定到控件。可以在 MSDN here 找到一个带有变换(拉伸等)的示例。

【讨论】:

  • 在检查了您上面提供的链接之后,我想指出我的答案涉及制作可以在代码中使用的控件的可视化,而无需创建控件的图像, 保存它,然后加载该图像以供使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多