【发布时间】:2014-08-14 22:12:15
【问题描述】:
我对 WPF 弹出窗口有一个独特的问题。
在我的项目中,我需要获取全屏 WPF 应用程序的位图并将其发送出去。 为此,我在我的主画布上使用 RenderTargetBitmap。在我开始使用菜单和组合框之前,一切都很好。它们都使用 Popup 来显示子菜单项。所以从我读到的弹出窗口是作为一个单独的窗口实现的,它不是主窗口的子窗口。所以渲染位图不会得到它的位图。
所以我的解决方案是实现自定义弹出窗口并更改 MenuItem 的控制模板。
在我的自定义弹出窗口中,我执行 IsOpenChanged 事件
private void PopupPanel_IsOpenChanged(object sender, DependencyPropertyChangedEventArgs e)
{
if ((bool)e.NewValue)
{
ContentControl childControl = new ContentControl();
childControl.Content = this.Content;
Canvas rootCanvas = FindAncester<Canvas>(this);
rootCanvas.Children.Add(childControl);
childControl.Focus();
Child = childControl;
}
else
{
if (Child != null)
{
Canvas rootCanvas = FindAncester<Canvas>(this);
rootCanvas.Children.Remove(Child);
Child = null;
}
}
}
这个想法是在我的主画布顶部显示一个子 ContentControl 作为弹出窗口。 当我逐步完成时,一切都很好,除了我在屏幕上看不到任何东西。 任何帮助将不胜感激。
【问题讨论】:
标签: c# wpf popup contentcontrol