Я некоторое время использовал WPF и встроенные средства контроля валидации. Я читал отличную статью в codeproject, ссылка на которую приведена ниже
http://www.codeproject.com/KB/WPF/wpfvalidation.aspx
У меня есть требование от одного из наших клиентов, которого я не смог добиться, используя MVVM в WPF.
Проблема заключается в следующем:
Существует TextBox, который принимает только цифры.
Когда пользователь вводит любое значение, кроме чисел, я должен отобразить ему ошибку. Ошибка должна
- выделите TextBox, предоставьте всплывающую подсказку
- отображать ошибку в MessageBox
- вернуть TextBox к его предыдущему значению
Например, когда загружен TextBox
, он может иметь начальное значение, скажем, 10
, Затем пользователь вводит неверное значение, скажем «аа».
Теперь мне нужно отобразить MessageBox со словами «Неверное значение», а затем вернуть значение обратно в 10.
Существует множество статей и способов отображения ошибок в WPF, например, с помощью ErrorTemplate и так далее.
<Style TargetType="{x:Type TextBox}">
<Setter Property="Validation.ErrorTemplate">
<Setter.Value>
<ControlTemplate>
<DockPanel LastChildFill="True">
<TextBlock DockPanel.Dock="Right"
Foreground="Orange"
FontSize="12pt">
!!!!
</TextBlock>
<Border BorderBrush="Green" BorderThickness="1">
<AdornedElementPlaceholder />
</Border>
</DockPanel>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Validation.HasError" Value="true">
<Setter Property="ToolTip"
Value="{Binding RelativeSource={RelativeSource Self},
Path=(Validation.Errors)[0].ErrorContent}">
</Setter>
</Trigger>
</Style.Triggers>
</Style>
Но как мне вернуть значение и отобразить MessageBox. Я знаю, что это может быть отображено с помощью события в файле code-behind, но я не хочу писать какую-либо логику в моем файле code Я хочу добиться этой функциональности, используя MVVM
Пример иллюстрации будет очень полезен !!