¿Hay alguna forma de agregar una restricción a una propiedad de dependencia adjunta para que solo se pueda aplicar a un tipo específico, algo en los metadatos?Restricción para limitar el alcance de una propiedad de dependencia adjunta
En caso negativo, ¿es significativo el tipo explícito de Get-and Set-methods de los DP adjuntos?
Ejemplo:
Si tengo, por ejemplo, la siguiente declaración:
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));
¿sería meaningfull para cambiarlo de la siguiente manera, sólo aplicarlo a cuadros de texto?
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));
Mi pregunta es, porque esto conduce a una inconsistencia, porque GetValue y FijarValor podrían utilizarse más para cualquier tipo y también en el marcado hay posibilidad de limitar el attachement.
Lo que hice anteriormente fue que agregué una excepción en el controlador PropertyChanged y planteé una excepción que solo los tipos xy están permitidos.
¿Qué opinas?
Buena pregunta ... espero que mi nueva respuesta lo resuelva. – Noldorin
Para los metadatos, he deseado otra respuesta, pero tampoco he visto nada. Para la declaración de los métodos de acceso, creo que es una cuestión de política. Si es de sentido común hacerlo así, lo haré. Pero para mí es un poco como cerrar el balcón con una gran cerradura pero dejar la puerta principal abierta. Pero al menos los métodos set y get muestran el propósito del dp adjunto. Usaré su recomendación, pero seguiré verificando el tipo de destino en el controlador PropertyChanged. Entonces, un usuario recibirá una excepción en el diseñador si intenta usar el DP en un control incorrecto. – HCL