2012-03-05 45 views
0

我結合的UltraTree控制(10.3版),以自定義數據源,比如:UltraTree綁定到業務對象的顯示文本

public void Populate(List<FilterDimension> data) 
{ 
    DataBindings.Clear(); 
    DataSource = data; 
    Nodes[0].DataColumnSetResolved.NodeTextColumn = Nodes[0].DataColumnSetResolved.Columns["DisplayText"]; 
} 

我的期望是,改變任何束縛的DisplayText屬性FilterDimension對象將導致UltraTree節點的文本更新。實際上,樹中的文本不會更新,並且PropertyChanged事件仍然爲null,表明UltraTree甚至不會偵聽此通知。如何獲得UltraTree以收聽FilterDimension中的房產更改?

下面是從FilterDimension相關代碼:

internal class FilterDimension : INotifyPropertyChanged 
{ 
    private string _displayText = null; 
    private string _name = null; 

    private BindingList<string> _values = new BindingList<string>(); 

    /// <summary> 
    /// Gets or sets the display friendly name. 
    /// </summary> 
    public string Name 
    { 
     get { return _name; } 
     set 
     { 
      _name = value; 
      FirePropertyChangedNotification("Name"); 
      if (_displayText == null) { FirePropertyChangedNotification("DisplayText"); } 
     } 
    } 

    /// <summary> 
    /// Gets or sets the display text that is used in TreeView nodes. When null, uses the Name. 
    /// </summary> 
    public string DisplayText 
    { 
     get { return _displayText ?? Name; } 
     set { _displayText = value; FirePropertyChangedNotification("DisplayText"); } 
    } 

    /// <summary> 
    /// Gets a read/write list of values. Is never null. 
    /// </summary> 
    public BindingList<string> Values 
    { 
     get { return _values; } 
     set { _values = value ?? new BindingList<string>(); } 
    } 

    #region Events 

    public event PropertyChangedEventHandler PropertyChanged; 

    protected void FirePropertyChangedNotification(string propertyName) 
    { 
     if (PropertyChanged != null) 
     { 
      PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); 
     } 
    } 

    #endregion 
} 

回答

1

事實證明,所有我需要做的是改變BindingList<FilterDimension>,而不是List<FilterDimension ...我完全錯過了控制期望通知冒泡從名單。