C'è un modo per aggiungere un vincolo a una proprietà di dipendenza collegata in modo che possa essere applicata solo a un tipo specifico, qualcosa nei metadati?Vincolo per limitare l'ambito di una proprietà di dipendenza associata
In caso contrario, è significativo digitare esplicitamente i metodi Get e Set statici dei DP collegati?
Esempio:
Se ho ad esempio la seguente dichiarazione:
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));
sarebbe meaningfull per farla cambiare come segue, da applicare solo ai 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));
La mia domanda è, perché questo porta ad un'inconsistenza, perché GetValue e SetValue potrebbero essere utilizzati più di qualsiasi tipo e anche nel markup è alcuna possibilità di limitare l'attachement.
Quello che ho fatto in precedenza era che ho aggiunto un'eccezione nel gestore di PropertyChanged e ho sollevato un'eccezione che solo i tipi xy sono consentiti.
Cosa ne pensi?
Buona domanda ... si spera che la mia nuova risposta lo risolva. – Noldorin
Per i metadati, ho desiderato un'altra risposta ma non ho visto nulla. Per la dichiarazione dei metodi di accesso, penso che sia una questione di politica. Se è il senso comune farlo in questo modo, lo farò. Ma per me è un po 'come chiudere il balcone con una grande serratura ma lasciare la porta principale sbloccata. Ma almeno i metodi set-and get mostrano lo scopo del dp allegato. Userò il tuo consiglio ma continuerò a controllare il tipo di destinazione nel gestore di PropertyChanged. Quindi un utente riceverà un'eccezione nel progettista se tenta di utilizzare il DP su un controllo sbagliato. – HCL