2011-02-08 33 views
0

有很多方法可以通過ValueConverter或ObjectDataProvider將SOURCE方法綁定到目標屬性。但是,如果我想要綁定影響目標方法呢?如何從源屬性綁定到TARGET方法

請看下面的例子:

class ListBoxViewModel 
{ 
     public static readonly DependencyProperty CurrentItemProperty = DependencyProperty.Register("CurrentItem", typeof (object), typeof (ListBoxViewModel)); 

     public object CurrentItem 
     { 
      get { return (object) GetValue(CurrentItemProperty); } 
      set { SetValue(CurrentItemProperty, value); } 
     } 
} 

我想物業CURRENTITEM到ListBoxCollectionView結合。但是,由於CollectionView的CurrentItem屬性是隻讀的,因此我無法直接綁定它。相反,我必須執行MoveCurrentToPosition函數。我該怎麼做?

如果還有其他方法可以做到這一點 - 如果沒有綁定到方法,我也很想聽到它,但是,主要問題是如何綁定到方法,如果不是這種情況,那麼在一個類似的。如果不可能,那麼最好的選擇是什麼?例如,想到的一個想法是訂閱依賴項屬性(本例中爲CurrentItem)的更改通知並運行該函數的過程代碼。

謝謝!

回答

1

您可以用屬性更改回調中,你則可以手動更新的CollectionView你的財產登記:

public static readonly DependencyProperty CurrentItemProperty = 
    DependencyProperty.Register 
    (
     "CurrentItem", 
     typeof(object), 
     typeof(ListBoxViewModel), 
     new UIPropertyMetadata(null, CurrentItemChanged) 
    ); 
public object CurrentItem 
{ 
    get { return (object)GetValue(CurrentItemProperty); } 
    set { SetValue(CurrentItemProperty, value); } 
} 

private static void CurrentItemChanged(DependencyObject d, DependencyPropertyChangedEventArgs e) 
{ 
    // Update current item logic 
} 
+0

這是個好主意!自定義附加屬性真的很棒! – VitalyB 2011-06-14 04:37:26