我知道这听起来很疯狂,但为了我的理解,您如何解释将 Window.DataContext
设置为 MainWindow
会导致此错误:
"Exception of type 'System.StackOverflowException' was thrown."
<Window>
<Window.DataContext>
<local:MainWindow />
</Window.DataContext>
</Window>
最佳答案
初始化窗口时,XAML 会膨胀为真实对象。那些真实的对象调用了它们的构造函数,这对它们进行了初始化。
这一行实际上创建了 MainWindow
的新实例,而不是返回现有实例:
<local:MainWindow />
因此,您的 XAML 创建了一个新窗口,该窗口将 DataContext
设置为一个新窗口,该窗口将其 DataContext
设置为一个新窗口,该窗口将其 DataContext 设置为
到一个新窗口,将其 DataContext
设置为一个新窗口,将其 DataContext
设置为一个新窗口,该窗口将其 DataContext
code> 到一个新窗口,将其 DataContext
设置为一个新窗口,将其 DataContext
设置为一个新窗口,该窗口将其 DataContext
到一个新窗口,将其 DataContext
设置为一个新窗口,将其 DataContext
设置为一个新窗口,将其 DataContext
设置为一个新窗口,
依此类推,直到整个事情崩溃和燃烧。
您可能想要做的是这个:
<Window DataContext="{Binding RelativeSource={RelativeSource Self}}">
</Window>
将DataContext
设置为窗口的当前实例,而不是新窗口。
关于c# - 主窗口 DataContext StackOverflowException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45698984/