c# - 主窗口 DataContext StackOverflowException

标签 c# wpf xaml

我知道这听起来很疯狂,但为了我的理解,您如何解释将 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/

相关文章:

c# - IValueConverter不就是 "Conversions with helper classes"的一个例子吗

c# - WPF:未调用 IValueConverter

c# - MVVM 和 DI - 如何处理模型对象?

c# - 如何在不挂 gui 的情况下在 WPF 上运行异步任务

c# - Metro 应用程序中的键盘快捷键

c# - WCF 和对象继承

c# - 异步事件处理程序和并发

wpf - 将合并词典添加到合并词典中

c# - 如何在C#中实现Excel vbA

c# - x :Bind to DependencyProperty not working (classic Binding works fine)