TreeView绑定问题

时间:2012-04-30 14:55:54

标签: c# wpf winforms treeview

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

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

MainWindow.cs做的事情如下:

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

响应包含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)而不仅仅是名称!

我在这里做错了什么。

2 个答案:

答案 0 :(得分:1)

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

首先,您要为Response定义数据模板,然后将ItemsSource绑定到AnswerRR。响应类没有AnswerRR属性,它应该是Answers。

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

以下是所有DataTemplates的完整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必须是属性,而不是字段!

答案 1 :(得分:0)

从我看到你的绑定指向不正确。它应该是:

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