我有一个类,它可以实时计算属性,例如:
class CircleArea
{
public double Radius { get; set; }
public double Area
{
get
{
return Radius * Radius * Math.PI;
}
}
}
我将其转换为DependencyObject,方法如下:
我这么做:
class CircleArea:
DependencyObject
{
public static readonly DependencyProperty RadiusProperty =
DependencyProperty.Register("Radius", typeof(double), typeof(CircleArea));
public double Radius
{
get { return (double)GetValue(RadiusProperty); }
set
{
SetValue(RadiusProperty, value);
CoerceValue(AreaProperty);
}
}
internal static readonly DependencyPropertyKey AreaPropertyKey =
DependencyProperty.RegisterReadOnly("Area", typeof(double), typeof(CircleArea), new PropertyMetadata(double.NaN));
public static readonly DependencyProperty AreaProperty = AreaPropertyKey.DependencyProperty;
public double Area
{
get
{
return Radius * Radius * Math.PI;
}
}
}
我在XAML中有两个文本框,一个使用双向绑定到半径,另一个使用单向绑定到面积。
我该怎么做才能使对半径文本框的编辑更新面积文本框?
CoerceValue(AreaProperty);
和InvalidateProperty(AreaProperty);
,但它们都没有起作用。 - Palatis