我知道这听起来可能很疯狂,但为了我的理解,您将如何解释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
设置为窗口的当前实例,而不是新窗口。