2012-12-19 185 views
1

代碼visualNode.Nodes.Add給出了NullReferenceException,因爲此時節點未啓動。以編程方式將子節點添加到xamdatatree節點

private XamDataTreeNode LoadTree(XmlNode dataNode, int index) 
{ 
    XamDataTreeNode visualNode = new XamDataTreeNode(index, null, MakeTextBox(dataNode.Name), false, null); 

    foreach (XmlNode child in dataNode.ChildNodes) 
    { 
     visualNode.Nodes.Add(LoadTree(child, VisualChildrenCount)); 
    } 

    visualNode.IsExpanded = true; 

    return visualNode; 
} 

我一直在使用ItemsSource嘗試,但在XamDataTreeNode.ItemsSource保護。如何填寫XamDataTree的值?

我能夠做到這一點與WPF樹控件,但不是與Infragistics樹控件。

編輯,我將闡明多一些:

@HighCore:我想用,以及他們如何看的UI元素只能在數據的分析後才能確定。

@D J:當數據結構可以是任何xml結構時,如何綁定數據?

+0

不要在代碼中操作UI元素。 UI不是數據。 –

+0

爲什麼不使用綁定。 –

+0

我需要使用的數據源取決於樹中的位置。此外,我需要分析數據並基於它的孩子和其他東西中的數據操作樹節點的外觀。此外,我嘗試使用visualNode.ItemsSource來設置數據源,但它的保護。注意我想要一個類似於xamdatagrid的東西,從來沒有得到轉換器工作:http://stackoverflow.com/questions/13747485/cannot-apply-cellvaluepresenter-typeconverter-to-xamdatagridcells – MrFox

回答

0

我通過將XamDataTree映射到提供用作內容的標籤的樹結構來解決此問題。使用標準PropertyChangedNotifier

public class TreeNode : PropertyChangedNotifier 
{ 
    private Label text; 
    private System.Drawing.Image icon; 
    private ObservableCollection<TreeNode> children; 
} 

     <ig:XamDataTree.GlobalNodeLayouts> 
      <ig:NodeLayout 
       Key="Children" 
       DisplayMemberPath="Text" 
       TargetTypeName="Model.TreeNode" 
       > 
      </ig:NodeLayout> 
     </ig:XamDataTree.GlobalNodeLayouts> 
相關問題