2015-06-16 230 views
-3

我在一個類中使用函數ObservableCollection。如何從ObservableCollection獲取數據C#

它也被定義爲另一個類中的公共可達。

public ObservableCollection<Node> _nodes; 
public ObservableCollection<Node> Nodes 
{ 
    get { return _nodes ?? (_nodes = new ObservableCollection<Node>()); } 
} 

我想在另一個類中調用這個ObservableCollection,如何正確地執行它?

我已經在stackoverflow上試過這個話題,但是告訴我Node是空的。

+0

'Nodes'不是'static'財產,我猜你正在嘗試使用類名來訪問它,而你需要該類的實例。這個對實例的引用必須以某種方式從其他類訪問(意味着它可以靜態訪問,例如作爲靜態類的靜態屬性,或者更好地將實例傳遞給其他類,例如作爲構造函數或方法參數) 。 – Sinatr

回答

1

所以你有你的A類,其中包含你的「節點」。

要訪問B類的幾件事情需要發生的節點:

  • A類必須是可以被實例化爲另一個類的成員的公共類。
  • 在B組,必須實例A類:

    ClassB { 
    
        _private ClassA instanceOfA; 
    
        public ClassB() { 
         istanceOfA = new ClassA(); 
        } 
    
        private void DoWork() 
        { 
         foreach(var node in instanceOfA.Nodes) 
         { 
          // Do Something 
         } 
        } 
    } 
    

這將會給您訪問ClassA的公共節點屬性。

另外要注意的 - 它好像你正在使用的getter/setter,但是在這種情況下,你的第一個

public ObservableCollection<Node> _nodes; 

可改爲

private ObservableCollection<Node> _nodes; 

適當封裝它。然後,你可以一個setter添加到您的公共財產(除非它是隻讀):

public ObservableCollection<Node> Nodes 
    { 
     get { return _nodes ?? (_nodes = new ObservableCollection<Node>()); } 
     set {_nodes = value; } 
    } 
+0

好的。我已經做了所有事情,但是當我想要數據時出現錯誤: 「在WpfApplication1.exe中發生了類型'System.NullReferenceException'的第一次機會異常 附加信息:未將對象引用設置爲對象實例 如果存在這個例外的處理程序,程序可能會安全地繼續。「 這個錯誤發生在「foreach(var nodex in Nodes)」 – Pukaai

+0

對不起。加工。謝謝! – Pukaai

+0

如何將邊框實現爲Thumb_DragDelta?如何限制「node.X + = e.Horizo​​ntalChange;」?該節點不會越過這個邊界? – Pukaai