WPF:CLR属性依赖属性
问题描述:
我有物业WPF:CLR属性依赖属性
public double X
{
get
{
return Canvas.GetLeft(this) + this.Radius;
}
set
{
Canvas.SetLeft(this, value - this.Radius);
PropertyChanged(this, new PropertyChangedEventArgs("X"));
}
}
我想使用此属性,但动画相关的动画只需要依赖属性的用户控制。我如何解决这个问题?
答
这样看来,你想“X”是你的对象(椭圆?)的中心
我可以建议两件事情:
创建一个新的依赖广告载体,把您的二传手OnPropertyChanged回调代码为新的属性。 (这可能是最好的)
将RenderTransform设置为您的元素,该元素是带有-Radius的TranslateTransform,然后设置Canvas.Left就像设置其中心一样。
答
那么,所有这些属性是从Canvas.Left
派生它的价值。你为什么不直接动画Canvas.Left
?
+0
可以用C#(而不是XAML)显示示例吗? – 2011-03-10 15:47:12
如果在OnPropertyChanged中将X设置为50并且半径为10,则最终将Canvas.Left设置为40.该getter将返回正确的50,无需更改。如果半径改变只是更新X = Canvas.Left +半径 – kowd 2011-03-11 01:36:51
我不明白在哪里{return Canvas.GetLeft(this)+ this.Radius; }逻辑。 – 2011-03-11 11:58:54