0

フォームコードをWPFに移植しようとしています。

現在、DNSゾーン転送をツリービューに投稿したいと思います。

MainWindow.csは次のようなことをします:

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

応答には、ResourceRecordsを含む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>

ただし、名前だけではなく、常に完全なResourceRecordを出力(my.test.com。600 IN A 1.2.3.4)として取得します。

私はここで何を間違っているのですか。

4

2 に答える 2

1

データ テンプレートとバインドに間違いがほとんどありません。

まず、Response のデータ テンプレートを定義し、その中で ItemsSource を AnswerRR にバインドします。応答クラスには AnswerRR プロパティがありません。Answers である必要があります。

また、応答データ テンプレートから Name プロパティにバインドしています。応答に Name プロパティが含まれていません。ResourceRecord には NAME プロパティが含まれているため、ResourceRecord のデータ テンプレートを定義し、そこから NAME プロパティにバインドする必要もあります。大文字と小文字の区別にも注意してください。バインディングでは大文字と小文字が区別されます。

すべての DataTemplate の完全な 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 に答える