gpt4 book ai didi

wpf - ContentControl 崩溃中的绑定(bind)

转载 作者:行者123 更新时间:2023-12-04 01:52:45 24 4
gpt4 key购买 nike

谁能告诉我为什么这会使我的应用程序崩溃?我不知道为什么似乎有一些无休止的递归。我得到了这个异常(exception)

Logical tree depth exceeded while traversing the tree. This could indicate a cycle in the tree


<ContentControl Content="{Binding}">
<ContentControl.ContentTemplate>
<DataTemplate>
<Button Content="{Binding MyString}"/>
</DataTemplate>
</ContentControl.ContentTemplate>
</ContentControl>

这就是我作为来源的全部
    public MainWindow()
{
InitializeComponent();
MyString = "Test";
this.DataContext = this;
}

public string MyString { get; set; }

最佳答案

您使用 MainWindow 作为 MainWindow 内容的 DataContext。当您设置 Content="{Binding}"在 ContentControl 上,这是将 ContentControl 的内容设置为 MainWindow 实例。这是一个问题,因为 ContentControl 包含在 MainWindow 的内容中。每当 Content 属性接收到 UIElement 时,它都会将其呈现为 UIElement,而不是像使用非 UI 类那样通过 DataTemplate。所以你的树最终成为

MainWindow
ContentControl
MainWindow
ContentControl
...

为您的 DataContext 使用单独的数据对象而不是窗口本身将为您提供您正在寻找的行为:
public partial class Window13 : Window
{
public Window13()
{
InitializeComponent();
MyData data = new MyData();
data.MyString = "Test";
this.DataContext = data;
}
}

public class MyData
{
public string MyString { get; set; }
}

关于wpf - ContentControl 崩溃中的绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4519774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com