2009-04-24 53 views
0

我正在嘗試構建一個帶有TreeView的SL應用程序。這是我的XAML:Silverlight控件工具包TreeView不呈現項目

<UserControl xmlns:controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" 
      xmlns:tkwin="clr-namespace:System.Windows;assembly=System.Windows.Controls.Toolkit" 
      xmlns:basics="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls"    
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    x:Class="SL.MyApp.Page" 
    Width="800" Height="600"> 
    <controls:DockPanel>   
     <controls:TreeView Name="siteTree" controls:DockPanel.Dock="Left" Width="150"> 
      <controls:TreeView.ItemTemplate> 
       <tkwin:HierarchicalDataTemplate ItemsSource="{Binding Children}"> 
        <StackPanel Orientation="Horizontal">       
         <TextBlock Text="{Binding Name}"/> 
        </StackPanel> 
       </tkwin:HierarchicalDataTemplate> 
      </controls:TreeView.ItemTemplate> 
     </controls:TreeView> 
     <basics:TabControl controls:DockPanel.Dock="Right" TabStripPlacement="Top"> 
      <basics:TabItem Header="Sites"></basics:TabItem> 
      <basics:TabItem Header="Lists"></basics:TabItem> 
      <basics:TabItem Header="Users"></basics:TabItem> 
     </basics:TabControl>  
    </controls:DockPanel> 
</UserControl> 

和相關的代碼隱藏:

namespace SL.MyApp 
{ 
    public partial class Page : UserControl 
    { 
     private ObservableCollection<WebDescriptor> _webHierarchy = new ObservableCollection<WebDescriptor>(); 

     public Page(WebsSvc.WebsSoapClient websClient) 
     {   
      InitializeComponent(); 

      siteTree.ItemsSource = _webHierarchy; 

      websClient.GetWebCollectionCompleted 
       += new EventHandler<SL.SiteBuilder.WebsSvc.GetWebCollectionCompletedEventArgs>(websClient_GetWebCollectionCompleted); 
      websClient.GetWebCollectionAsync(); 

      // TODO: some kind of spinner or progress bar needs to be started. 
     } 

     void websClient_GetWebCollectionCompleted(object sender, SL.SiteBuilder.WebsSvc.GetWebCollectionCompletedEventArgs e) 
     { 
      foreach (XElement xe in e.Result.Elements()) 
      { 
       _webHierarchy.Add(ServiceObjectParser<WebDescriptor>.Parse(xe)); 
      } 
     }  
    } 
} 

更新:WebDescriptor類:

public class WebDescriptor 
{ 
    public string Title { get; set; } 
    public string Url { get; set; } 
    public List<WebDescriptor> Children { get; set; } 
} 

我的問題是什麼在TreeView呈現在所有。我已經驗證在websClient_GetWebCollectionCompleted中獲得的結果是有效和正確的,但....沒有任何結果。

任何想法?

+0

你能發佈更多關於你的web服務返回的信息嗎? – 2009-04-24 20:24:22

回答

0

看結合跟蹤輸出之後,我終於意識到我試圖綁定到一個領域,而不是一個屬性。

Doh!

0

在websClient_GetWebCollectionCompleted:

siteTree.ItemsSource = _webHierarchy;

此外,改變你在樹視圖上的TextBlock綁定是{結合標題}

相關問題