Есть ли способ добавить ограничение к прикрепленному свойству зависимостей, чтобы его можно было применить только к определенному типу, что-то в метаданных?
Если нет, имеет ли смысл явный тип статических методов Get-и Set-приложенных 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));
Было бы целесообразно изменить его следующим образом, чтобы применить его только к 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.
Как вы думаете?