在WPF中的验证错误样式,类似于Silverlight。

51 浏览
0 Comments

在WPF中的验证错误样式,类似于Silverlight。

默认情况下,WPF中的Validation.ErrorTemplate只是一个没有ToolTip的小红色边框。

在Silverlight 4中,验证错误已经预先进行了漂亮的样式设计。

下面是Silverlight 4和WPF中发生验证错误的比较:

Silverlight 4

图片

WPF

图片

请注意,与我个人认为在Silverlight中的很好的外观相比,WPF版本的外观非常平淡和无聊。

在WPF框架中是否存在类似的验证样式/模板,或者是否有人创建了像上面Silverlight版本中那样漂亮的验证模板?还是我需要从头开始创建它们?

如果有人想尝试一下,上面的验证错误可以通过以下代码进行复现,适用于Silverlight和WPF:

MainWindow/MainPage.xaml

代码

MainWindow/MainPage.xaml.cs

代码

0
0 Comments

在WPF中,出现了一个与Silverlight类似的问题,即当文本框失去焦点后再次获得焦点时,弹出窗口没有显示。问题的解决方法是使用自定义的错误装饰器,并在文本框的默认样式中设置"Validation.ErrorTemplate"属性。以下是一个示例模板:


    
        
            
                
                    
                        
                            
                        
                    
                    
                        
                            
                                
                                
                            
                        
                    
                
            
        
    

这个问题的原因可能是焦点失去和重新获得焦点时的事件处理有问题。解决方法是检查焦点事件的处理逻辑,并确保在焦点重新获得时正确显示弹出窗口。

希望这个解决方案对你有帮助!

0
0 Comments

Validation Error Style in WPF, similar to Silverlight

在WPF中,验证错误的样式可以通过添加一个Popup控件来实现,这样就可以显示错误信息。然而,这种方法也存在一些问题,下面将逐一介绍这些问题以及解决方法。

问题一:当文本框位于窗口边缘时,错误信息可能会被截断。解决方法是将错误信息显示在窗口外部,这样就可以避免截断问题。

问题二:当文本框右侧存在其他控件时,如果错误信息显示在该文本框右侧,可能会遮挡其他控件,导致用户无法点击。解决方法是将错误信息显示在文本框的右上方,这样可以避免遮挡其他控件,并且视觉效果更好。

为了实现以上解决方法,可以使用以下代码:


  
    
      
      
        
          
          
          
        
      
      
      
        
        
          
        
        
          
        
        
          
            
          
          
        
      
    
  

以上代码定义了一个名为`ErrorTemplateSilverlightStyle`的控件模板,其中包含了用于显示错误信息的`Popup`控件。`Popup`控件可以在文本框的右上方显示错误信息,并且可以根据文本框的焦点状态和鼠标悬停状态来显示和隐藏。

为了使用这个控件模板,可以在需要验证的文本框中添加以下代码:


在上述代码中,`Validation.ErrorTemplate`属性被设置为`ErrorTemplateSilverlightStyle`,这样就可以应用上面定义的控件模板来显示验证错误信息。

总结起来,使用`Popup`控件和自定义的控件模板可以实现在WPF中类似于Silverlight的验证错误样式。通过将错误信息显示在文本框的右上方,并根据文本框的焦点状态和鼠标悬停状态来显示和隐藏错误信息,可以提供更好的用户体验。

0
0 Comments

Validation Error Style in WPF, similar to Silverlight

最近,我研究了Silverlight版本的验证错误模板,并创建了一个类似的WPF版本。我使用了一个MultiBinding和一个BooleanOrConverter来显示"tooltip-error",当TextBox具有键盘焦点或鼠标位于右上角时。为了实现淡入动画,我使用了一个DoubleAnimation来控制Opacity,以及一个ThicknessAnimation和一个BackEase/EaseOut EasingFunction来控制Margin。

我们可以这样使用它:


同时,我创建了一个名为errorTemplateSilverlightStyle的ControlTemplate,其中包含了一个StackPanel,两个Border和一个TextBlock。这个ControlTemplate还包含了一个DataTrigger,当TextBox具有键盘焦点或鼠标位于右上角时,将触发淡入动画。

为了实现这些功能,我还创建了一个名为BooleanOrConverter的IMultiValueConverter,它将多个值转换为bool类型,并返回这些值中的任意一个为true时的结果。

此外,为了解决在某些情况下显示错误消息超出可视区域的问题,我在评论中提到了一种解决方法,即将errorBorder的Visibility设置为Collapsed。

此外,有用户提到了在某些情况下,当控件位于窗口边缘时,验证错误消息被切断的问题。对于这个问题,我还没有找到解决方法,但是有用户建议尝试将StackPanel的方向从水平改为垂直。

值得注意的是,有用户在使用这个模板时遇到了一些问题,比如在DataGrid中使用时会引发异常。为了解决这个问题,有用户提供了一个改进版的BooleanOrConverter。

另外,有用户提到了当有弹出窗口覆盖在验证错误消息上时,红色框仍然可见的问题。对于这个问题,有用户提供了一个解决方法,即使用Popup和触发器,在用户将鼠标悬停在提示框上时打开Popup。

此外,还有用户遇到了当控件位于极右侧时,验证错误消息显示在可视区域之外的问题。对于这个问题,目前还没有解决方法。

最后,有用户提到了在输入文本时,速度非常慢的问题。对于这个问题,目前还没有解决方法。

这个验证错误模板在WPF中的实现类似于Silverlight,但是仍然存在一些问题需要解决。希望这篇文章对你有所帮助!

0