DataGrid Combobox SelectionChanged Событие запускается при прокрутке - PullRequest
0 голосов
/ 26 октября 2018

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

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

Когда я изменяю элемент, выбранный в выпадающем списке, запускается команда делегата на модели представления, которая отключается, обновляется и т. Д. Но когда я прокручиваю сетку данных, также происходит событие 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);          
         }
    }

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

Большое спасибо.

1 Ответ

0 голосов
/ 26 октября 2018

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

...