2011-06-23 46 views
0

我有一个对话框,显示ObservableCollection(一个集合或整数)的单个元素。随着用户更改集合的各个值,我想验证更改。如何获得ObservableCollection与IDataError配合使用

在我的虚拟机中,集合只有一个属性,我的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) 
      {... 

回答

2

我不认为你的做法会为了工作,因为对于ValidatesOnDataError物业工作,绑定必须实现IDataErrorInfo的目标。在你的场景中,ChannelNumber属性是目标,而不是ChannelNumberCollection本身,你的代码片断表明集合实现了IDataErrorInfo。

我认为你要么需要:

  • 确保在ChannelNumberCollection每个项目实现IDataErrorInfo的(我的建议)