DataGrid Combobox SelectionChanged Событие срабатывания при прокрутке

У меня проблемы с триггером события SelectionChanged для поля со списком в моей сетке данных.

Источник элементов combobox привязан к моей модели представления. Выбранный элемент combobox также привязан к моей модели представления.

Когда я изменяю выбранный элемент поля со списком, запускается команда делегата в модели представления, которая отключается и обновляется и т. Д. Но когда я прокручиваю сетку данных, также возникает событие SelectionChanged.

Я также использую Prism MVVM.

Вот мой XAML:

<DataGrid.Columns>
  <DataGridTemplateColumn Header="Selected Reason" Width="150">
    <DataGridTemplateColumn.CellTemplate>
      <DataTemplate>
        <ComboBox ItemsSource="{Binding Path=DataContext.Reasons, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}"
            SelectedItem="{Binding SelectedReason}">
          <i:Interaction.Triggers>
            <i:EventTrigger EventName="SelectionChanged">
              <i:InvokeCommandAction Command="{Binding Path=DataContext.ReasonChangedCommand, RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}}" 
                    CommandParameter="{Binding}"/>
              </i:EventTrigger>
            </i:Interaction.Triggers>
        </ComboBox>
      </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
  </DataGridTemplateColumn>
</DataGrid.Columns>

Вот моя команда Просмотр модели:

private DelegateCommand<T> _reasonChangedCommand;
public DelegateCommand<T> ReasonChangedCommand =>
            _reasonChangedCommand ?? (_reasonChangedCommand = new DelegateCommand<T>(ReasonChanged));

    private async void ReasonChanged(T obj)
    {
         if (obj != null)
         {       
             await _updateRepository.UpdateAsync(obj);          
         }
    }

Во всех статьях, которые я искал, обсуждается, что команда не запускается и не запускается при прокрутке сетки данных. Мы будем очень благодарны за любую помощь или направление к статье.

Огромное спасибо.


person StuC    schedule 26.10.2018    source источник
comment
Что вы делаете в ReasonChangedCommand, чего не можете делать в установщике SelectedReason?   -  person Peregrine    schedule 26.10.2018
comment
ReasonChangedCommand обновляет SelectedReason для этой строки таблицы данных в базе данных.   -  person StuC    schedule 26.10.2018


Ответы (1)


После экспериментов с различными триггерами событий, использование события DropDownClosed решает эту проблему.

person StuC    schedule 26.10.2018
comment
У меня была точно такая же проблема. Вы спасли мою жизнь :). Спасибо ! - person Damgot; 06.03.2020