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