有没有办法向附加的依赖项属性添加约束,以便它只能应用于特定类型,元数据中的某些内容?
如果没有,显式输入附加DP的静态Get-and Set-methods是否有意义?
示例:
如果我有以下声明:
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));
如下所示更改它是否有意义,只将其应用于TextBoxes?
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可以再用于任何类型,而且标记也不可能限制附件。
我之前做过的是我在PropertyChanged处理程序中添加了一个异常,并在那里引发了一个只允许类型为xy的异常。
您怎么看?
答案 0 :(得分:17)
我认为,为了限制附加属性的目标类型,您需要做的就是更改GetPropertyName
和SetPropertyName
方法的定义。
示例:
public static int GetAttachedInt(MyTargetType obj)
{
return (int)obj.GetValue(AttachedIntProperty);
}
public static void SetAttachedInt(MyTargetType obj, int value)
{
obj.SetValue(AttachedIntProperty, value);
}
其中MyTargetType
可以是从DependencyObject
继承的任何类型。