How can one register a dependency property whose value is calculated using the value of another dependency property?
Because the .NET property wrappers are bypassed
You're actually correct, you should use PropertyChangedCallback. Here's how:
public bool TestBool
{
get { return (bool)GetValue(TestBoolProperty); }
set
{
SetValue(TestBoolProperty, value);
}
}
public static readonly DependencyProperty TestBoolProperty =
DependencyProperty.Register("TestBool", typeof(bool), typeof(ViewModel),
new PropertyMetadata(false, new PropertyChangedCallback(OnTestBoolChanged)));
private static void OnTestBoolChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
ViewModel vm = d as ViewModel;
vm.TestDouble = value ? 100.0 : 200.0;
}
public double TestDouble
{
get { return ((double)GetValue(TestDoubleProperty)); }
set { SetValue(TestDoubleProperty, value); }
}
public static readonly DependencyProperty TestDoubleProperty =
DependencyProperty.Register("TestDouble", typeof(double), typeof(ViewModel));