Команда WPF DataGrid SelectedItem не срабатывает

У меня есть вопрос о wpf datagrid и поведении DatagridTemplateColumn.

<DataGrid
ItemsSource="{Binding Items, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
inf:MultiSelectorBehaviours.SynchronizedSelectedItems="{Binding SelectedItems, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
SelectionUnit="FullRow" SelectionMode="Extended">
<DataGrid.Columns>
    <DataGridTemplateColumn.CellTemplate>
         <DataTemplate>
               <Button Background="Transparent" 
                      BorderThickness="0" 
                      BorderBrush="Transparent" 
                      Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.ExecuteCommand}" CommandParameter="{Binding}"  />
           </DataTemplate>
       </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
 </DataGrid.Columns>

My Question is: When i press the button in DataGridTemplateColumn and the row is NOT selected, command is fired in my model. But when select my row first, command is not fired. Does anybody know why?

Спасибо за вашу помощь...

РЕДАКТИРОВАТЬ: когда я меняю SelectionMode с «Расширенный» на «Одиночный», он работает, как и ожидалось. Но я должен использовать "Расширенный"...


person streetmaster86    schedule 21.06.2016    source источник
comment
Я думаю, вам нужны <DataTemplate.Triggers> и <EventTrigger> для того же. В настоящее время вы обрабатываете только нажатие кнопки и передачу команды для просмотра модели. Вам может понадобиться щелчок по всей строке.   -  person ViVi    schedule 21.06.2016
comment
Не могли бы вы объяснить это немного больше? потому что я даже не могу понять, почему команда запускается, когда строка не выбрана...   -  person streetmaster86    schedule 22.06.2016
comment
Это потому, что когда вы нажимаете кнопку, срабатывает команда кнопки. И когда вы выбираете строку, почему вы ожидаете, что команда кнопки сработает? Его не уволят. Сделайте одну вещь. Создайте триггер шаблона данных для PreviewMouseDown и обработайте как кнопку, так и строку. Он должен работать. Попробуйте и вернитесь, если возникнут проблемы.   -  person ViVi    schedule 22.06.2016
comment
Мы говорим об одном и том же? я хочу, чтобы команда запускалась только при нажатии кнопки. это работает нормально, когда строка не выбрана. когда я сначала выбираю строку, а затем нажимаю кнопку, ничего не происходит...   -  person streetmaster86    schedule 23.06.2016


Ответы (1)


Попробуйте IsSynchronizedWithCurrentItem="True" в своей сетке данных. Это частая причина возникновения проблем, связанных с «SelectedItem». В противном случае вам следует предоставить более полный пример кода, чтобы получить решение этой проблемы.

person Dbl    schedule 21.06.2016