我有一个winform应用程序。在主窗体中,我托管了一个RadDocking控件(来自telerik),它是WPF。当我单击隐藏的窗格时,它会将窗格打开为弹出窗口。里面有一个文本框。如果我输入文本框,则会输入。但是如果我将焦点重新放回到主窗体然后再次尝试输入它将不会接受任何输入。我看到这里有一个解决方案:WPF TextBox doesn't take input, space and backspace works,解决办法是写
ElementHost.EnableModelessKeyboardInterop(window);
但遗憾的是我无法进入窗口。这就是我试过的:
private Window FindWindowParent(DependencyObject dependencyObject)
{
var window = dependencyObject as Window;
if (window != null || dependencyObject == null)
{
return window;
}
if (dependencyObject.GetType().Name.Equals("PopupRoot"))
{
return FindWindowParent(LogicalTreeHelper.GetParent(dependencyObject));
}
return FindWindowParent(VisualTreeHelper.GetParent(dependencyObject));
}
当我到达popuproot时 - 它没有可视父级,所以我切换到LogicalTreeHelper并且我获得了Popup本身但它没有窗口作为父级(因为它托管在winforms中)。 所以我卡住了,我无法通过弹出窗口解决问题。
我也尝试过:
var window = Window.GetWindow(dependencyObject);
没用。 有什么想法吗?