Можем ли мы установить свойство исходного объекта при проверке?
У меня есть приложение wpf-mvvm.
В приведенном ниже коде "PartBPremiumBuydown" является экземпляром класса. который имеет два свойства => 1. Значение. и 2. HasValidationError.
Свойство "Значение" используется для привязки к текстовому полю. Если есть какие-либо ошибки проверки... Могу ли я установить HasValidationError=true?
<TextBox ToolTip="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors).CurrentItem.ErrorContent}">
<TextBox.Text>
<Binding Path="PartBPremiumBuydown.Value"
ValidatesOnDataErrors="True"
UpdateSourceTrigger="PropertyChanged"
Converter="{x:Static localns:Converters.DecimalToCurrency}">
<Binding.ValidationRules>
<localns:CurrencyRule />
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
1 ответ
Решение
У тебя должно быть PartBPremiumBuydown
реализовать IDataErrorInfo
интерфейс, похожий на приведенный ниже код:
public string Error { get; private set; }
public string this[string propertyName]
{
get
{
string mError = string.Empty;
if (propertyName == "Value"
&& !<insert your rule>)
{
mError = "Validation error text."
}
Error = mError;
return (string.IsNullOrWhiteSpace(mError))// if NOTHING
? null // then return null
: mError; // else return error
}
}
Теперь, когда вы привязываете свой TextBox к Value
, если пользователь вводит текст, который нарушает ваше правило, ошибка проверки будет отображаться в TextBox.