Ho difficoltà a capire i buoni motivi della proprietà di dipendenza. Perché la proprietà "Testo" di System.Controls.TextBox è una proprietà di dipendenza e non una proprietà normale? Quali benefici serve essere una proprietà di dipendenza?Proprietà dipendenza Utilizza in WPF
Una delle cose che sto cercando di realizzare è aggiungere una proprietà ValidationRules al mio UserControl che conterrà altre regole di validazione. Come qui:
<customControls:RequiredTextBox.ValidationRules>
<validators:NotNullOrEmptyValidationRule ErrorMessage="FirstName cannot be null or empty"/>
</customControls:RequiredTextBox.ValidationRules>
Il problema è che io non sono sicuro se la proprietà ValidationRules dovrebbe essere DependencyProperty o semplicemente una proprietà normale.
Il codice di cui sopra dà il seguente errore:
{"Cannot add element to 'ValidationRules'; the property value is null. Error at object 'LearningWPF.ValidationRules.NotNullOrEmptyValidationRule' in markup file 'LearningWPF;component/addcustomerwindow.xaml' Line 35 Position 66."}
Ecco la proprietà ValidationRules:
public static readonly DependencyProperty ValidationRulesProperty =
DependencyProperty.Register("ValidationRules",
typeof (Collection<ValidationRule>), typeof (RequiredTextBox),
new FrameworkPropertyMetadata(null));
public Collection<ValidationRule> ValidationRules
{
get { return (Collection<ValidationRule>)GetValue(ValidationRulesProperty); }
set { SetValue(ValidationRulesProperty, value); }
}
Che tipo è ValidationRules? Sembra che tu stia cercando di aggiungere un oggetto a un tipo di raccolta, ma non hai istanziato la raccolta. –
Ho aggiornato il post! – azamsharp
È necessario creare un'istanza della raccolta prima di poter aggiungere elementi. Nel costruttore della tua classe RequiredTextBox aggiungi: ValidationRules = new Collection(); Ora sarai in grado di aggiungere elementi attraverso xmal. –