2009-07-20 2 views
1

Ich bin ziemlich neu bei WPF.WPF-Abhängigkeitseigenschafts-Rückgabewert

Angenommen, ich habe eine Int-Abhängigkeitseigenschaft definiert. Der Zweck der DP besteht darin, den Wert + 1 zurückzugeben (siehe Code). In .Net 2.0 Ich würde geschrieben haben:

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

Wie würden Sie einen DP deklarieren, die ein ähnliches Verhalten erreicht?


Die Zwangsbedingung, die angeboten wurde, funktioniert nur für die Set-Operation. Ich möchte das Get-Ergebnis modifizieren.

+1

Es gibt keine Möglichkeit, ein "get" -Ergebnis für einen Abhängigkeitseigenschaftswert zu filtern. Der Zwang macht genau das, was Sie fragen, wenn Sie es von außerhalb des Objekts betrachten, nur auf eine andere Art und Weise. Sie können jedoch versuchen, einen zuvor erzwungenen Wert lokal zu speichern. –

Antwort

5

Sie würden es erreichen indirekt wie folgt aus:

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; 
} 

prüfen diese link für eine Erklärung über Zwang.