如何使ObservableCollection与IDataError一起使用

| 我有一个对话框,显示一个ObservableCollection(一个int集合)的各个元素。当用户更改集合的各个值时,我想验证更改。 在我的VM中,集合只有一个属性,而我的XAML绑定到各个元素。 那么,当集合中的项发生更改时,如何获取验证属性索引器? 我对WPF还是很陌生,所以我想到有一个简单的解决方案。 感谢您的帮助。 这是XAML。 10个频道中的每个频道都有一个等效的文本框
        <TextBox Grid.Row=\"0\" Grid.Column=\"1\" Name=\"chan01\" 
                 HorizontalAlignment=\"Left\" Width=\"60\" 
                 Text=\"{Binding ChannelList[0].ChannelNumber, ValidatesOnDataErrors=True, UpdateSourceTrigger=PropertyChanged,
                        NotifyOnValidationError=True}\" />
这是虚拟机中的一些代码。 grp_对象是模型
    /// <summary>
    /// Scan channel list.
    /// </summary>
    public ChannelNumberCollection ChannelList
    {
        get
        {
            return grp_.ChannelList; 
        }
        set 
        { 
            grp_.ChannelList = value; NotifyPropertyChanged(\"ChannelList\"); 
        }
    }


    public string this[string propertyName]
    {
        get
        {
            switch (propertyName)
            {...
    
已邀请:
        我认为您的方法不会起作用,因为为了使ValidatesOnDataError属性起作用,绑定的目标必须实现IDataErrorInfo。在您的方案中,ChannelNumber属性是目标,而不是ChannelNumberCollection本身,并且您的代码段指示该集合实现了IDataErrorInfo。 我认为您要么需要: 确保ChannelNumberCollection中的每个项目都实现IDataErrorInfo(我的建议) 要么 创建一个ValidationRule,可以将其添加到ChannelNumber绑定的Binding.ValidationRules属性中     

要回复问题请先登录注册