2010-07-02 37 views
3

我創建的類:WPF綁定:如何使財產被改變時,它的屬性的屬性更改

class StorageBase 
{ 
    public Queue<Slices> Slices {get;set;} 
} 

和WPF具有類型StorageBase的依賴項屬性存儲自定義控件:

public StorageBase Storage 
     { 
      get { return (StorageBase)GetValue(StorageProperty); } 
      set { SetValue(StorageProperty, value); } 
     } 
     public static readonly DependencyProperty StorageProperty = 
      DependencyProperty.Register("Storage", typeof(StorageBase), typeof(MaterialStreamControl), new UIPropertyMetadata(null, new PropertyChangedCallback(OnStoragePropertyChanged))); 
     static void OnStoragePropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
     { 
      (d as MaterialStreamControl).Render(); 
     } 

如果存儲中的片更改,我該如何重新渲染組件?

回答

1

正常情況下,StorageBase會實現INotifyPropertyChanged。然後Slices上的setter會引發INotifyPropertyChanged.PropertyChanged事件。

例子:​​

編輯:您可能還需要進行切片一個ObservableCollection,而不是一個隊列。 http://msdn.microsoft.com/en-us/library/ms668604.aspx

+0

第一種方法不起作用。當我將切片添加到切片時,OnStoragePropertyChanged不會引發。 第二種方法不適合導致我只需要隊列。 – 2010-07-02 08:25:15

+0

您可以像使用隊列一樣使用ObservableCollection。或者,您可以創建自己的實現IObservableCollection的Queue類。 – 2010-07-02 22:58:42