2009-07-20 173 views
1

我對WPF相當陌生。WPF依賴項屬性返回值

假設我定義了一個int依賴項屬性。 DP的目的是返回值+1(參見代碼)。 .NET 2.0中,我會寫:

private int _myValue = 0; 
    public int MyValue 
    { 
     get { return _myValue + 1; } 
     set { _myValue = value; } 
    } 

你會如何宣佈DP是實現類似的行爲?


提供的強制只適用於Set操作。我想修改獲取結果。

+1

無法過濾依賴項屬性值的「get」結果。如果你從對象之外考慮它,那麼脅迫就完全符合你的要求,只能用另一種方式。但是,您可以嘗試在本地存儲預先強制的值。 – 2009-07-20 13:32:18

回答

5

你會間接地實現這樣的:

public static readonly DependencyProperty ValueProperty = 
    DependencyProperty.Register("Value", typeof(int), typeof(OwnerClass), 
     new FrameworkPropertyMetadata(0, null, new CoerceValueCallback(CoerceValue))); 

public int Value 
{ 
    get { return (int)GetValue(ValueProperty); } 
    set { SetValue(ValueProperty, value); } 
} 

private static object CoerceValue(DependencyObject d, object value) 
{ 
    return (int) value + 1; 
} 

檢查這個link約脅迫的解釋。