2017-10-11 8 views
1

ツリーを作成するには、葉はクラスの異なるプロパティになるでしょうか?WPF階層データテンプレートクラス内の異なるプロパティ

は私が

<Grid> 
     <TreeView Height="300" Width="300" ItemsSource="{Binding Items}"> 
      <TreeView.ItemTemplate> 
       <HierarchicalDataTemplate DataType="{x:Type self:IBase}" ItemsSource="{Binding Items}"> 
        <StackPanel Orientation="Horizontal"> 
         <TextBlock Text="{Binding Name}" /> 
        </StackPanel> 
       </HierarchicalDataTemplate> 
      </TreeView.ItemTemplate> 
     </TreeView> 
    </Grid> 
+0

あなたは任意のネスト、なぜ 'HierachicalDataTemplate'と' TreeView'を持っていませんか? – Sinatr

+0

@Sinatr、TreeViewそれは状態です。 – A191919

答えて

1

あなたは、ここに論理的に階層的なデータテンプレートを必要としないこの

AMachine 
-Wheels 
Bmachine 
-Years 

Code.cs

public partial class MainWindow : Window 
    { 
     public MainWindow() 
     { 
      InitializeComponent(); 
      DataContext = new TestViewModel(); 
     } 
    } 

    public class TestViewModel 
    { 
     public ObservableCollection<IBase> Items { get; set; } 

     public TestViewModel() 
     { 
      Items = new ObservableCollection<IBase>(); 
      Items.Add(new AMachine { Wheels = "3", Name = "AMachine" }); 
      Items.Add(new BMachine { Years = "2", Name = "BMachine" }); 
     } 
    } 
    public interface IBase 
    { 

    } 

    public class AMachine : IBase 
    { 
     public string Name { get; set; } 
     public string Wheels { get; set; } 
    } 

    public class BMachine : IBase 
    { 
     public string Name { get; set; } 
     public string Years { get; set; } 
    } 

Xaml.csのようなものを取得したいです通常のデータテンプレートとListBox(ノードとしてパンダと?):

<ListBox ItemsSource="{Binding Items}"> 
    <ListBox.Resources> 
     <DataTemplate DataType="{x:Type local:AMachine}"> 
      <Expander Header="{Binding Name}"> 
       <TextBlock Text="{Binding Wheels}" /> 
      </Expander> 
     </DataTemplate> 
     <DataTemplate DataType="{x:Type local:BMachine}"> 
      <Expander Header="{Binding Name}"> 
       <TextBlock Text="{Binding Years}" /> 
      </Expander> 
     </DataTemplate> 
    </ListBox.Resources> 
</ListBox> 

enter image description here

関連する問題