2010-05-28 2 views
1

에 treeviewitem로 treeviewitem 캐스팅 할 수 없습니다, 및 클래스가 있습니다으로 myTree의내가 웹 서비스 ASMX있어 WPF

Country[] items = new MyService().GetListOfCountries(); 
structureTree.ItemsSource = items; 

코드 : 나는 그것이 트 리뷰 WPF를 MZ에 결합

Country 

public string Name {get;set;} 
public string Code {get;set;} 
public List<Area> Areas {get;set;} 

Area 

public string Name {get;set;} 
public string Code {get;set;} 
public List<Regions> Provinces {get;set;} 

Provinces 

public string Name {get;set;} 
public string Code {get;set;} 

는 :

:
<UserControl x:Class="ObjectsAndZonesSimpleTree" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

     <Grid> 
     <StackPanel Name="stackPanel1"> 

      <GroupBox Header="Choose" Height="354" Name="groupBox1" Width="Auto"> 

       <TreeView Name="structureTree" SelectedItemChanged="structureTree_SelectedItemChanged" Grid.Row="0" Grid.Column="0" ItemsSource="{Binding}" Height="334" ScrollViewer.VerticalScrollBarVisibility="Visible" ScrollViewer.HorizontalScrollBarVisibility="Visible" Width="Auto" PreviewMouseRightButtonUp="structureTree_PreviewMouseRightButtonUp" FontFamily="Verdana" FontSize="12" BorderThickness="1" MinHeight="0" Padding="1" Cursor="Hand" Margin="-1"> 
        <TreeView.Resources> 
         <HierarchicalDataTemplate DataType="{x:Type MyService:Country}" 
            ItemsSource="{Binding Path=ListOfRegions}"> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock TextAlignment="Justify" VerticalAlignment="Center" Text="{Binding Path=Name}"/> 
          </StackPanel> 
         </HierarchicalDataTemplate> 
         <HierarchicalDataTemplate DataType="{x:Type MyService:Region}" 
            ItemsSource="{Binding Path=Provinces}"> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock TextAlignment="Justify" VerticalAlignment="Center" Text="{Binding Path=Name}"/> 


       </StackPanel> 
         </HierarchicalDataTemplate> 
         <DataTemplate DataType="{x:Type MyService:Province}" 
            ItemsSource="{Binding Path=ListOfCities}"> 
          <StackPanel Orientation="Horizontal"> 
           <TextBlock TextAlignment="Justify" VerticalAlignment="Center" Text="{Binding Path=Name}"/> 
       </StackPanel> 
         </DataTemplate> 

        </TreeView.Resources> 
       </TreeView> 
      </GroupBox> 

     </StackPanel> 
    </Grid> 

</UserControl> 

나에게 널을 제공합니다

답변

3

SelectedItem에는 실제로 국가, 지역 또는 지역 (또는 null)이 포함됩니다. TreeViewItem을 원한다면 strutureTree.ItemContainerGenerator.ContainerFromItem(structureTree.SelectedItem)을 사용할 수 있습니다.

+0

오류가 발생합니다. 비 정적 필드, 메서드 또는 속성 'System.Windows.Controls.ItemContainerGenerator.ContainerFromItem (object)'에 대한 개체 참조가 필요합니다. – user278618

+0

정확한 코드를 게시 할 수 있습니까? 'TreeView.ItemContainerGenerator'를 시도한 것처럼 들리지만,'treeTree.ItemContainerGenerator'를 사용하여 특정 트리에서 접근해야합니다. – JustABill

2

수정. Country를 SelectedItem으로 기대해야합니다. WPF는 Windows Forms와 완전히 다른 방식으로 작동합니다. 그것은 모두 데이터 바인딩에 관한 것입니다!

+0

그래서 부모 노드를 얻지 못하거나 다중 선택을 수행 할 수 없습니까? :/ – user278618

+0

가능합니다. 그러나 나는 그 부분을 기억하지 않는다. 그것은 분명히 고통입니다. –