如何使用WPF程序中的IDataErrorInfo.Error?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (54)

我有一个这样的对象:

public class Person : IDataErrorInfo
{
    public string PersonName{get;set;}
    public int Age{get;set;}

    string IDataErrorInfo.this[string propertyName]
    {
        get
        {
            if(propertyName=="PersonName")
            {
                if(PersonName.Length>30 || PersonName.Length<1)
                {
                    return "Name is required and less than 30 characters.";
                }
            }
            return null;
        }
    }

    string IDataErrorInfo.Error
    {
        get
        {
            if(PersonName=="Tom" && Age!=30)
            {
                return "Tom must be 30.";
            }
            return null;
        }
    }
}

绑定PersonName和AGE属性很容易:

<TextBox Text="{Binding PersonName, ValidatesOnDataErrors=True}" />
<TextBox Text="{Binding Age, ValidatesOnDataErrors=True}" />

但是,如何使用Error属性并适当地显示它呢?

提问于
用户回答回答于

应该修改TextBox样式,这样它就可以显示该属性的错误所在。下面是一个简单的示例,它将错误显示为工具提示:

<Style TargetType="TextBox">
        <Style.Triggers>
            <Trigger Property="Validation.HasError" Value="true">
                <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},
                        Path=(Validation.Errors).CurrentItem.ErrorContent}" />
            </Trigger>
        </Style.Triggers>
</Style>

把它放进应用程序。来自app.xaml文件的资源,它将用于应用程序的每个文本框:

<Application.Resources>
    <Style TargetType="TextBox">
            <Style.Triggers>
                <Trigger Property="Validation.HasError" Value="true">
                    <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Self},
                            Path=(Validation.Errors).CurrentItem.ErrorContent}" />
                </Trigger>
            </Style.Triggers>
    </Style>
</Application.Resources>

热门问答

COS范围下载?

许金泉

腾讯 · 高级工程师 (已认证)

腾讯云COS前端开发
推荐
可以用标准 Http 头部 Range 来指定下载范围。 COS 的 SDK 应该都支持自定义 Header,可以设置: Range: 'bytes=2000-7999' 和 Range: 'bytes=9000-9599'... 展开详请

cmq的Queue Endpoint 订阅-消费问题?

请您查看一下您的根账号下是否有持久密钥? 如果无法解决您的问题,请您在控制台的右上角发起工单提问(https://console.cloud.tencent.com/workorder),我们会有专人进行问题排查和解决,感谢您使用CMQ消息队列服务

我开通了直播,现在可以使用二维码扫码播放,但是我想在播放的界面,加一个发红包的功能,该怎么做?

腾讯云-chaoli腾讯云产品二部,技术支持
推荐
使用云通信功能,可以实现发红包。http://faq.qcloudtrtc.com/docs/%E4%BA%91%E9%80%9A%E8%AE%AF%E6%A8%A1%E5%9D%97/%E6%B6%88%E6%81%AF%E9%97%AE%E9%A2%98.html?h=%E7...... 展开详请

rtmp 推流,但是环境噪音被放大了,请问这个怎么设置,是否有消除噪音的方法?

腾讯云-chaoli腾讯云产品二部,技术支持
推荐
你好TXLivePushConfig有降噪接口:setANS。 SDK 对于 32000Hz 的音频数据是支持降噪的,现在 SDK 都是 48000Hz 采样率的了,不支持使用降噪接口了。 噪音太大通常原因是采集端和播放端距离过近造成的声音循环采集,可以将两台设备离远一些(3m ...... 展开详请

域名备案小程序登陆不上?

推荐已采纳
首先,用小程序不用幕布照片了 其次上述登录失败问题,可以参考以下操作: 1. 删除小程序; 2. 删掉微信进程; 3. 重新打开微信或建议客户使用其他机型试下,苹果7有这个问题,如果还是操作不了,可以让客户工单提供下机型、手机版本。... 展开详请

腾讯云直播 ,后台能否设置付费才能观看视频,和主持人设置禁言?

腾讯云-chaoli腾讯云产品二部,技术支持
推荐

可以做到:有直播地址就能播放,业务后台不给终端下发直播地址,就能限制观看直播。禁言功能,是指连麦时的禁言功能吗?有setMute静音接口

所属标签

扫码关注云+社区