我正在查看工具箱中的WPF组件,但找不到2005/2008中存在的错误提供商。

它被删除了吗?

有帮助吗?

解决方案

错误提供者 是Winforms控件。 WPF中没有等效。但是,如果您创建一个赢得表单项目,您仍然可以在Visual Studio 2008中找到。

您可能想看一下这篇文章 WPF中的错误验证. 。它有一些有关如何处理验证的有用建议和想法。

其他提示

.NET 3.5添加了WPF支持IDATAERRORINFO: .NET 3.5中的数据验证.

首先,请原谅我评论如此古老的讨论,但这可能会有所帮助,因为我有同样的问题,西蒙的链接帮助我“从某些东西开始”

我可以测试Simon P.Stevens教程,但老实说我不太喜欢它:

  • 使用ResponseTemplate在显示错误时使响应速度较慢。
  • 只有在同一类中的规则始终相同的情况下,这才能起作用(在我的情况下,我有一些数量,有时可能是负面的,有时不是)。
  • 对于国际化申请(就我而言),外部库无法访问翻译的资源,因此我无法设置分配消息。

我认为使用MVVM非常适合管理任何情况:

我将文本框设置为带有边界刷和工具提示,关于我的条件,我将隐藏/显示工具提示和颜色边框:

XAML:

<TextBox x:Name="tbName" Grid.Column="1" Grid.Row="0" Margin="3" LostFocus="tbName_LostFocus" BorderBrush="{Binding BordertbName}"
                 Text="{Binding MonRepere.Nom}" ToolTipService.ToolTip="{Binding ErrorName}" ToolTipService.IsEnabled="{Binding ToolTipNameEnable}"/>

背后的代码(LostFocus =曾经为Windowsform的人留下):

private void tbName_LostFocus(object sender, RoutedEventArgs e)
    {
        if(tbName.Text=="")
        {
            this.mv.ErrorName = Properties.Resources.ErrorEmpty;

        }
        else
        {
            mv.ErrorName = "";
        }
    }

然后ViewModel:

private string errorName;
            public string ErrorName
            {
                get { return errorName; }
                set
                {
                    errorName = value;
                    if (value == "")
                    {
                        ToolTipNameEnable = false;
                        BordertbName = Brushes.Gray;
                    }
                    else
                    {
                        ToolTipNameEnable = true;
                        BordertbName = Brushes.Red;
                    }
                    this.NotifyPropertyChanged("ErrorName");
                }
            }
            private Brush bordertbName;
            public Brush BordertbName
            {
                get { return bordertbName; }
                set
                {
                    bordertbName = value;
                    this.NotifyPropertyChanged("BordertbName");
                }
            }
            private bool toolTipNameEnable;
            public bool ToolTipNameEnable
            {
                get { return toolTipNameEnable; }
                set
                {
                    toolTipNameEnable = value;
                    this.NotifyPropertyChanged("ToolTipNameEnable");
                }
            }

当规则针对情况时,非常有用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top