2010-03-02 54 views
0

我有一個業務對象的項目,其中包含複合結構:WPF的TreeView不適的DataTemplate相應

public class Tree 
{ public IProductComponent TreeRoot { get; set; } } 

public interface ITreeComponent 
{ public string Name { get; set; } } 

public class ContainerComponent : ITreeComponent 
{ public BindingList<ITreeComponent> Children { get; set; } } 

public class LeafComponent : ITreeComponent 
{ } 

我需要這個結構來一個TreeView綁定在我的WPF項目。樹視圖第一:

<TreeView x:Name="treeView" Grid.ColumnSpan="2"> 
<TreeView.Resources> 
    <HierarchicalDataTemplate 
    ItemsSource="{Binding Children}" 
DataType="{x:Type businessObjects:ContainerComponent}"> 
    <Label Content="{Binding Name}"/> 
    </HierarchicalDataTemplate> 
    <DataTemplate DataType="{x:Type businessObjects:LeafComponent}"> 
    <Label Content="{Binding Name}"/> 
    </DataTemplate> 
</TreeView.Resources> 
</TreeView> 

和代碼綁定:

bTreeView = new Binding(); 
bTreeView.Source = MyTree; 
bTreeView.Path = new PropertyPath("TreeRoot.Children"); 
treeView.SetBinding(TreeView.ItemsSourceProperty, bTreeView); 

的問題是,TreeView中實際上並未使用這些模板(它顯示層次只有頂層和調用的ToString ()來顯示這些項目,請告訴我,我在哪裏出了問題。否則,如果我設置它是工作,但我不能確定兩個模板存在。

感謝。

+0

對不起,如何在視圖模型中構建樹層次結構並不十分清楚。你能否列舉一些例子? – Tigran 2010-03-02 12:43:27

回答

0

我的不好 - 主要程序集是用實體加載dll而不是一個實體。這導致它變得瘋狂 - 只要我修好了它,並在問題消失後加載程序集。

0

好我注意到你將模板放在資源中,而不是在TreeVeiw.ItemTemplate下。

TreeView應該有一個ItemTemplate(Hierarchical)和ItemsSource集合。除此之外不需要任何東西。

雖然有助於我們進行測試的示例數據。

+0

只需要注意 - ItemTemplate不允許同時定義不同的模板,如分層和簡單的DataTemplate - 這就是爲什麼我必須使用資源;) – Jefim 2010-03-08 08:21:54

+0

是否有你需要兩個特定的原因?你試圖綁定的數據是什麼? – 2010-03-08 18:00:36