主窗口数据上下文堆栈溢出异常



我知道这听起来可能很疯狂,但为了我的理解,您将如何解释Window.DataContext设置为MainWindow会导致此错误:

"抛出类型为'System.StackOverflowException'的异常。

<Window>
<Window.DataContext>
<local:MainWindow />
</Window.DataContext>
</Window>

初始化窗口时,XAML 将膨胀为实际对象。 这些真实对象调用了它们的构造函数,从而初始化它们。

此行实际上创建了一个新的MainWindow实例,而不是返回现有实例:

<local:MainWindow />
因此,XAML 创建一个新窗口,该窗口将DataContext设置为新窗口,将其DataContext设置为新窗口,将其DataContext设置为新窗口,将其DataContext设置为新窗口,将其DataContext

设置为新窗口,将其DataContext设置为新窗口, 将其DataContext设置为新窗口,将其DataContext设置为新窗口,将其DataContext设置为新窗口,将其DataContext设置为新窗口,将其DataContext设置为新窗口,将其DataContext设置为新窗口,

依此类推,直到整个东西崩溃和燃烧。

你可能想做的是:

<Window DataContext="{Binding RelativeSource={RelativeSource Self}}">
</Window>

这会将DataContext设置为窗口的当前实例,而不是新窗口。

最新更新