【发布时间】:2017-10-17 03:25:42
【问题描述】:
使用 WPF: A Simple Color Picker With Preview, Sacha Barber, 18 Apr 2012 , 我从中创建了一个自定义控件:
public class ColorCustomControl : Control
{....}
然后用作:
<Menu....>
<MenuItem.....>
<pn:ColorCustomControl/>
</MenuItem>
</Menu>
在选择刷子MenuItem时,它会产生以下图片:
在打开的画笔子菜单中选择任何项目都会导致在画笔子菜单保持打开状态下采取适当的操作。这就是我想要的效果。
但是,如下所示,选择三个色板中的任何一个都会导致新色板快速闪烁——它会替换“预览”左侧的颜色模式——然后立即关闭画笔子菜单。
如果再次选择画笔菜单项,则会正确显示最近选择的样本。
我已经尝试了所有预览事件(即键盘失去焦点、鼠标左键按下等),以尝试在选择样本时停止关闭子菜单。我发现没有任何东西可以阻止弹出窗口关闭。
从视觉中选择样本时,如何防止“画笔”子菜单关闭?
(我强烈怀疑在选择新样本图像时重绘视觉对象,如 InvalidateVisual() 会强制关闭子菜单)。
有什么想法吗?
TIA
【问题讨论】:
-
我发现this SO answer 使用的是
StaysOpenOnClick你试过这个吗? -
@XAMlMAX 是的...它不起作用,覆盖 PreviewLostKeyboardFocus 或任何使用 IsSubmenuOpen 的方法也不起作用。即使选择任何其他菜单项不会关闭弹出窗口,在重绘所选样本后,似乎没有什么能保持打开状态。由于这是强制重绘的唯一选择,我怀疑 InvalidateVisual() 正在强制关闭弹出窗口。不确定——也不知道在弹出窗口过早关闭后如何以编程方式重新打开它。
标签: wpf menu custom-controls menuitem