我的WPF表单包含单个属性“ PersonName
”。我希望在 NULL OR EMPTY
上引发错误。我从数据注释获得了一个解决方案,我参考了教程http://www.c-sharpcorner.com/uploadfile/20c06b/screen-validation-with-data-annotations-in-wpf/
我的XAML
<TextBox Text="{Binding PersonName, UpdateSourceTrigger=PropertyChanged,
NotifyOnValidationError=True, ValidatesOnDataErrors=True}" />
<Button Content="Save" IsDefault="True" Command="{Binding SaveCommand}"
IsEnabled="{Binding }" Width="150" Height="40"/>
我只能在 onPropertyChange
事件中看到错误。如果我在没有触摸TextBox
的情况下直接按下按钮,我就无法看到错误。如何在 Button
点击。
我的要求是PersonName不应该是 NULL
或 EMPTY
,如果该属性是 NULL
或 EMPTY
,然后我需要根据 IDataErrorInfo
而不是 Property.Length
首先,我们不会应用任何验证。一旦错误的数据输入或没有值击中Button,那么我需要验证。
答案 0 :(得分:1)
使用IDataErrorInfo接口并按照以下方式添加它,如
public class ABC : IDataErrorInfo
{
private string _PersonName;
public string PersonName
{
get { return _PersonName; }
set
{
_PersonName = value;
OnPropertyChanged("PersonName");
}
}
public string Error
{
get { return string.Empty; }
}
public string this[string columnName]
{
get
{
if ("PersonName" == columnName)
{
if (String.IsNullOrEmpty(PersonName))
{
return "Your Error Message";
}
}
}
}
}
并将xaml更改为
<TextBox Text="{Binding PersonName, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, NotifyOnValidationError=True, ValidatesOnExceptions=True, ValidatesOnNotifyDataErrors=True}" />
答案 1 :(得分:0)
您可以在示例here中向ValidationRule
申请TextBox
然后在Button
<Button Content="Save" IsDefault="True" Command="{Binding SaveCommand} Width="150" Height="40">
<Button.Style>
<Style TargetType="Button">
<Setter Property="IsEnabled" Value="False"/>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding Path=(Validation.HasError), ElementName=PersonName}" Value="False"/>
</MultiDataTrigger.Conditions>
<Setter Property="IsEnabled" Value="True"/>
</MultiDataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
</Button>