好的,我有一个源自Panel的测试控件。我为它添加了新的依赖属性。
public class TestPanel : Panel
{
public static DependencyProperty TestProperty = DependencyProperty.Register(
"Test",
typeof(double),
typeof(TestPanel),
new FrameworkPropertyMetadata(
0.0,
null));
public double Test
{
get
{
return (double)this.GetValue(TestProperty);
}
set
{
this.SetValue(TestProperty, value);
}
}
}
然后我在xaml <controls:TestPanel Test="50" />
但现在我想知道,为什么没有调用测试的设定者?它不应该通过值(50)吗?我在安排通过期间得到默认值(0.0)。
或者仅使用绑定有效吗?
答案 0 :(得分:1)
XAML处理器使用SetValue
方法设置依赖项属性的值:
Setters not run on Dependency Properties?
如果要在将属性设置为新值时执行某些操作,则应注册回调:
public static DependencyProperty TestProperty = DependencyProperty.Register(
"Test",
typeof(double),
typeof(TestPanel),
new FrameworkPropertyMetadata(
0.0,
OnPropertyChanged));
private static object OnPropertyChanged(DependencyObject d, object baseValue)
{
//...
}