0

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

目前我想将 DNS Zonetransfer 发布到 Treeview。

MainWindow.cs 执行以下操作:

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

Response 包含 Answers,其中包含 ResourceRecords。

    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>

但是,我总是将完整的 ResourceRecord 作为输出(my.test.com. 600 IN A 1.2.3.4)而不是名称!

我在这里做错了什么。

4

2 回答 2

1

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

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

此外,您还从 Response 数据模板绑定到 Name 属性。响应不包含 Name 属性。ResourceRecord 包含 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 必须是属性,而不是字段!

于 2012-04-30T21:13:59.657 回答
0

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

<TextBlock Text="{Binding NAME}" ToolTip="{Binding NAME}" />
于 2012-04-30T17:52:53.560 回答