Comment peut-on enregistrer une propriété de dépendance dont la valeur est calculée en utilisant la valeur d'une autre propriété de dépendance ?
Comme les wrappers de propriétés .NET sont contournés par WPF à l'exécution, il ne faut pas inclure de logique dans les accesseurs et les mutateurs. La solution à cela est généralement d'utiliser des PropertyChangedCallback
. Mais ceux-ci sont déclarés comme statiques.
Par exemple, quelle est la bonne façon d'accomplir cette tâche artificielle :
public bool TestBool
{
get { return (bool)GetValue(TestBoolProperty); }
set
{
SetValue(TestBoolProperty, value);
TestDouble = ((value)?(100.0):(200.0)); // ICI EST LA DÉPENDANCE
}
}
public static readonly DependencyProperty TestBoolProperty =
DependencyProperty.Register("TestBool", typeof(bool), typeof(ViewModel));
public double TestDouble
{
get { return ((double)GetValue(TestDoubleProperty)); }
set { SetValue(TestDoubleProperty, value); }
}
public static readonly DependencyProperty TestDoubleProperty =
DependencyProperty.Register("TestDouble", typeof(double), typeof(ViewModel));
Tant que la dépendance n'est pas circulaire, existe-t-il un moyen approprié d'accomplir ceci ?