WPF控件到ContextMenu菜单图标

本文关键字:菜单 图标 ContextMenu 控件 WPF | 更新日期: 2023-09-27 17:54:30

设置

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

问题

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

空的解决方案

如何将WPF控件转换为图像?

从控制视图获取位图图像

MenuItem.Icon接受一个视觉对象。不幸的是,当我把我的元素交给它时,它会爆炸,因为这个元素是另一个视觉树的一部分。

所以我试着对它进行屏蔽,然后为它提供相同的DataContext。这有点奏效。在不深入研究的情况下,元素的大小与数据上下文绑定,因此很难从后面的代码中调整大小,而不会看起来像一个巨大的黑客。

期望的结果

我想呈现我的WPF控件的图像,并将其分配给MenuItem.Icon属性。此外,我需要能够在后台代码中做到这一点。

WPF控件到ContextMenu菜单图标

要获得控件的图像,可以使用VisualBrush,并将Visual绑定到控件。在MSDN中可以找到一个转换(拉伸等(的例子。