在 WPF 中,在父窗口的构造函数中将窗口的 Owner 属性设置为其父窗口是否有任何问题?不应该有吧?那么为什么我会得到一个XamlParseException
从下面的代码?
public partial class MainView : Window
{
private readonly OwnedWindow owned;
public MainView()
{
InitializeComponent();
owned = new OwnedWindow();
owned.DataContext = DataContext;
var window = GetWindow(this);
owned.Owner = this; //Setting to window causes the same error
...
}
我应该澄清的是,删除owned.Owner = this;
还消除了运行时错误。
异常的详细信息:
XamlParseException 未处理
对匹配的类型“...MainView”的构造函数的调用
指定的绑定约束引发异常。
Actually,我查看了内部异常,它说:
无法将 Owner 属性设置为尚未显示的窗口
之前。
所以我现在正在研究这个问题。
问题是,因为 WPF 仅在第一次显示 WPF 窗口时创建本机窗口,所以您不能将尚未显示的窗口设置为Owner
(因为这建立了本机窗口“所有者 -> 拥有”关系,但本机句柄尚不存在。)
您可以处理StateChanged
所有者窗口上的事件,确保新状态为“显示”,然后设置拥有窗口的Owner
在那时候。或者,你可以创建并展示此时拥有的窗口。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)