我一直在使用WPF及其内置的验证控件来保持安静。我在codeproject中浏览了一篇很棒的文章,其链接如下
http://www.codeproject.com/KB/WPF/wpfvalidation.aspx
我有一个客户的要求,我无法在WPF中使用MVVM满足要求。
问题如下:
有一个TextBox仅接受数字。
当用户输入数字以外的任何值时,我必须向他显示错误。错误应该
例如,当加载
TextBox
时,其初始值可能为10。然后,用户输入一些错误的值,例如“aa”。
现在,我必须显示一个“错误值”的消息框,然后将值恢复为10。
有很多文章和方法可以通过使用ErrorTemplate等在WPF中显示错误。
<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。我知道可以使用代码隐藏文件中的事件来显示它,但我不想在代码隐藏文件中写入任何逻辑。我想使用MVVM 实现此功能
样本插图将非常有帮助!
最佳答案
第二个问题的答案:构建一个messageboxservice,然后从您的viewmodel中调用它。您可以在所有wpf框架中找到mvvm messageboxservices。例如看肚带。
撤消重做的事情,它是内置在wpf中的,因此strg + z可以工作。但是我还不知道如何使它与mvvm一起工作:)
关于wpf - 当输入错误时如何显示MessageBox,以及如何在WPF中使用MVVM还原TextBox的旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3852937/