2009-04-24 4 views
0

TreeView가있는 SL 응용 프로그램을 빌드하려고합니다.Silverlight Control Toolkit 렌더링 항목이없는 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)); 
      } 
     }  
    } 
} 

업데이트 : 여기 내 XAML은 년대 WebDescriptor 클래스 :

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

내 문제는 아무것도 전혀 트 리뷰에서 렌더링 없다는 것입니다. websClient_GetWebCollectionCompleted에서 얻은 결과가 유효하고 정확하지만 .... 아무것도 없음을 확인했습니다.

아이디어가 있으십니까?

websClient_GetWebCollectionCompleted에
+0

웹 서비스가 반환하는 정보를 더 게시 할 수 있습니까? –

+0

WebDescriptor 클래스 정의를 추가했습니다. 이 서비스는 ServiceObjectParser 클래스에서 파싱되는 XML 데이터 (foreach 행 참고)를 반환합니다. 서비스 자체는 WebDescriptor 객체가 올바르게 생성되고 실제로 존재하는 한 실제로 중요하지 않습니다. –

+0

약 5 번 내 대답을 편집해야했지만 시도해보십시오. 텍스트 블록을 존재하지 않는 속성에 바인딩하려는 것처럼 보입니다. –

답변

0

을 할 트 리뷰에서 TextBlock에 구속력을 변경, 나는 마침내 내가 필드 대신 속성에 바인딩하려고했다 깨달았다.

Doh!

0

:

siteTree.ItemsSource = _webHierarchy;

또한, 당신은 바인딩 추적 출력을보고 한 후 {제목 바인딩}

관련 문제