Label.Target 属性

有这么一段代码,主要用于数据验证, 来自 http://www.cnblogs.com/webabcd/archive/2009/08/10/1542663.html#2446195

<sdk:Label Target="{Binding ElementName=salary}"/>
<TextBox x:Name="salary" Width="100" Text="{Binding Salary, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True}"/>
<sdk:DescriptionViewer Target="{Binding ElementName=employee}" PropertyPath="Salary" />

Model

    public class EmployeeModel
    {
        private double _salary;
        [Display(Name = "薪水", Description = "0到10000之间")]
        [Range(0, 10000)]
        public double Salary
        {
            get { return _salary; }
            set
            {
                Validator.ValidateProperty(value, new ValidationContext(this, null, null) { MemberName = "Salary" });
                _salary = value;
            }
        }
    }

 

虽然label的Content属性没有赋值,但是运行后,会显示“薪水”, 这个就是Target属性的效果。

刚开始的时候不明白,所以对这个属性进行了一番折腾。

Label会优先显示Target element中 [Display(Name = "薪水", Description = "0到10000之间")]  中Name的值。

如果将上面一句中的Name=“薪水”, Label会显示“Salary”, 也就是“Salary”属性的名字。

如果把Label的target属性删掉,又没有给content赋值, 运行后Label就消失了。

同时在Label有target的的情况下, target如果验证错误,label会变红,这个也是Target的效果。Label.IsValid属性可以查看Target的数据是否有效

 

 

posted on 2012-08-13 10:21  YanYangjiang  阅读(703)  评论(0编辑  收藏  举报

导航