我很难找到依赖属性的好理由。为什么System.Controls.TextBox的“Text”属性是依赖属性而不是普通属性?它作为依赖属性有什么好处?
我试图实现的其中一件事是将ValidationRules属性添加到我的UserControl中,该属性将包含其他验证规则。就像这样:
<customControls:RequiredTextBox.ValidationRules>
<validators:NotNullOrEmptyValidationRule ErrorMessage="FirstName cannot be null or empty"/>
</customControls:RequiredTextBox.ValidationRules>
问题在于我不确定ValidationRules属性应该是DependencyProperty还是普通属性。
上述代码会产生以下错误:
{"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."}
这里是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); }
}