2011-06-23 50 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的(我的建議)