有没有办法将约束添加到附加的依赖属性,以便它只能应用于元数据中的特定类型?约束来限制附加依赖属性的范围
如果不是,显式键入所连接DP的静态获取和设置方法是否有意义?
例子:
如果我有例如下面的声明:
public static int GetAttachedInt(DependencyObject obj) {
return (int)obj.GetValue(AttachedIntProperty);
}
public static void SetAttachedInt(DependencyObject obj, int value) {
obj.SetValue(AttachedIntProperty, value);
}
public static readonly DependencyProperty AttachedIntProperty =
DependencyProperty.RegisterAttached("AttachedInt", typeof(int),
typeof(Ownerclass), new UIPropertyMetadata(0));
会是meaningfull如下改变它,只能将其应用到文本框?
public static int GetAttachedInt(TextBox textBox) {
return (int)textBox.GetValue(AttachedIntProperty);
}
public static void SetAttachedInt(TextBox textBox, int value) {
textBox.SetValue(AttachedIntProperty, value);
}
public static readonly DependencyProperty AttachedIntProperty =
DependencyProperty.RegisterAttached("AttachedInt", typeof(int),
typeof(Ownerclass), new UIPropertyMetadata(0));
我的问题是,因为这导致了不一致,因为的GetValue和的SetValue可再用于任何类型以及在标记是没有可能限制attachement。
我之前做过的事情是,我在PropertyChanged处理程序中添加了一个异常,并在那里引发了一个只允许类型xy的异常。
您认为如何?
好问题...希望我的新答案可以解决它。 – Noldorin 2010-07-20 07:41:56
对于元数据,我希望得到另一个答案,但我也没有看到任何东西。对于访问方法的声明,我认为它是一个政策问题。如果这样做是常识,我会做。但对我来说,它有点像用大锁关上阳台,但让大门解锁。但至少set和get方法显示了附加dp的目的。 我将使用您的建议,但继续检查PropertyChanged处理程序中的目标类型。因此,如果用户尝试在错误的控件上使用DP,用户将会在设计器中收到异常。 – HCL 2010-07-20 08:16:54