że nastąpił przykład, w którym były 2 Właściwości zależnościąJaka jest potrzeba wymuszania właściwości zależności?
public static readonly DependencyProperty CurrentReadingProperty =
DependencyProperty.Register("CurrentReading",
typeof(double),
typeof(Gauge),
new FrameworkPropertyMetadata(Double.NaN,
FrameworkPropertyMetadataOptions.None,
new PropertyChangedCallback(OnCurrentReadingChanged),
new CoerceValueCallback(CoerceCurrentReading)
),
new ValidateValueCallback(IsValidReading)
);
i
public static readonly DependencyProperty MinReadingProperty =
DependencyProperty.Register(
"MinReading",
typeof(double),
typeof(Gauge),
new FrameworkPropertyMetadata(
double.NaN,
FrameworkPropertyMetadataOptions.None,
new PropertyChangedCallback(OnMinReadingChanged),
new CoerceValueCallback(CoerceMinReading)
),
new ValidateValueCallback(IsValidReading));
i OnCurrentReadingChanged mogę wykonywać następujące operacje d.CoerceValue(MinReadingProperty);
który wywołuje CoerceValueCallback pełnomocnik ("CoerceMinReading") który ma następujący kod:
private static object CoerceMinReading(DependencyObject d, object value)
{
Gauge g = (Gauge)d;
double min = (double)value;
// some required conditions;
return min;
}
Co chcę zrozumieć, dlaczego muszę wykonać przymus?
Dlaczego po prostu nie mogę połączyć się z SetValue wewnątrz mojej usługi, zmieniłem oddzwonienie i zmieniłem wymagane właściwości, zamiast dzwonić do CoerceValue i obsługiwać rzeczy w moim wywołaniu wywołania coerce?
Nigdy nie powinieneś tego robić. Nie jest również jasne, dlaczego uważasz, że musisz to zrobić ... – Will