2012-04-30 80 views
0

我試圖將我的表單代碼移植到WPF。TreeView綁定問題

當前我想發佈一個DNS Zonetransfer到樹視圖。

MainWindow.cs確實是這樣的:

Response axfr = new Response(); 
axfr = dig.DigIt(); 
DataContext = axfr.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 1.2.3.4)而不是名字!

我在這裏做錯了什麼。

+0

咦?你在哪裏設置ResourceRecord.NAME?你期望輸出什麼? –

+0

Text =「{Binding Path =」NAME「}」 – 0x4f3759df

回答

1

您的數據模板,並結合一些錯誤。

首先您要爲Response定義數據模板,並在其中將ItemsSource綁定到AnswerRR。 Response類沒有AnswerRR屬性,它應該是Answers。

此外,您正在綁定到響應數據模板的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必須是一個屬性,而不是戰場!

+0

謝謝,就是這樣! – Stef

+0

如果ResourceRecord類包含附加列表___ public List TestResults; ___包含具有resultValue屬性的對象,我需要添加到XAML模板中的內容是什麼?我以爲我知道了,但我還是沒有! – Stef

+1

我已經擴展了我的原始答案以適應新的要求。 – Stipo

0

從我看到你的綁定指向不正確。它應該是:

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