树视图绑定问题

本文关键字:问题 绑定 视图 | 更新日期: 2023-09-27 18:32:54

我正在尝试将我的表单代码移植到 WPF。

目前,我想将DNS区域传输发布到树视图。

MainWindow.cs 执行以下操作:

Response axfr = new Response();
axfr = dig.DigIt();
DataContext = axfr.Answers;

响应包含答案,其中包含资源记录。

    public class Response
    {
            public List<AnswerRR> Answers { get; set; }

[...]

public class ResourceRecord
{
    public string NAME {get; set;}
}
public class AnswerRR : ResourceRecord
{
}

并使用此 XAML:

    <HierarchicalDataTemplate DataType="{x:Type Model:Response}"
                              ItemsSource="{Binding AnswerRR }">
        <TextBlock Text="{Binding Name}" ToolTip="{Binding Name}" />
    </HierarchicalDataTemplate>

但是,我总是获得完整的资源记录作为输出(在 1.2.3.4 中 my.test.com 600),而不是仅名称!

我在这里做错了什么。

树视图绑定问题

数据模板和绑定中几乎没有错误。

首先,您定义响应的数据模板,并在其中将 ItemsSource 绑定到 AnswerRR。响应类没有 AnswerRR 属性,它应该是 Answers。

此外,您还绑定到响应数据模板中的 Name 属性。响应不包含 Name 属性。资源记录包含 NAME 属性,因此您还需要为 ResourceRecord 定义数据模板,并从中绑定到 NAME 属性。还要注意区分大小写。绑定区分大小写。

下面是所有数据模板的完整 XAML:

<HierarchicalDataTemplate DataType="{x:Type Model:Response}" ItemsSource="{Binding Answers}">
</HierarchicalDataTemplate>
<HierarchicalDataTemplate DataType="{x:Type Model:ResourceRecord}" ItemsSource="{Binding TestResults}">
    <TextBlock Text="{Binding NAME}" ToolTip="{Binding NAME}"/>
</HierarchicalDataTemplate >
<DataTemplate DataType="{x:Type Model:DNSTestResult}">
    <TextBlock Text="{Binding resultValue}" ToolTip="{Binding resultValue}"/>
</DataTemplate>

DNSTestResult.resultValue 必须是属性,而不是字段!

从我所看到的情况来看,您的绑定指向不正确。 它应该是:

<TextBlock Text="{Binding NAME}" ToolTip="{Binding NAME}" />