Как заставить ObservableCollection работать с IDataError - PullRequest
0 голосов
/ 24 июня 2011

У меня есть диалоговое окно, в котором отображаются отдельные элементы коллекции ObservableCollection (коллекции). Поскольку пользователь изменяет отдельные значения коллекции, я хочу подтвердить изменение.

В моей виртуальной машине есть только свойство для коллекции, и мой 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)
            {...

1 Ответ

2 голосов
/ 24 июня 2011

Я не думаю, что ваш подход будет работать, потому что для того, чтобы свойство ValidatesOnDataError работало, цель Binding должна реализовывать IDataErrorInfo.В вашем сценарии свойство ChannelNumber является целью, а не сама ChannelNumberCollection, и ваш фрагмент кода указывает, что коллекция реализует IDataErrorInfo.

Я думаю, вам нужно либо:

  • Убедитесь, чточто каждый элемент в ChannelNumberCollection реализует IDataErrorInfo (моя рекомендация)

или

...