У меня есть DataGrid (WPF 4) следующего вида:
<DataGrid Margin="0,0,0,5" VerticalAlignment="Top" Height="192"
BorderBrush="#aaa" Background="White"
HorizontalAlignment="Left"
ItemsSource="{Binding Namen, Mode=OneWay}"
ScrollViewer.VerticalScrollBarVisibility="Visible"
AutoGenerateColumns="False"
ColumnHeaderHeight="24"
SelectionChanged="DataGridAuslaendischeAlteNamen_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="Namenseintrag" Binding="{Binding DisplayName, Mode=OneWay}" />
<DataGridTextColumn Width="75" Header="gültig von" Binding="{Binding GueltigAb, StringFormat=d, Mode=OneWay}" />
<DataGridTextColumn Width="75" Header="gültig bis" Binding="{Binding GueltigBis, StringFormat=d., Mode=OneWay}" />
<DataGridTemplateColumn Width="20" IsReadOnly="True">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Style="{DynamicResource CaratRemoveButton}"
Click="Button_Click" CommandParameter="{Binding}"
PreviewMouseDown="Button_PreviewMouseDown"
/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Проблема, с которой я столкнулся, заключается в том, что кнопка DataGridTemplateColumn
не срабатывает, если ее строка не выбрана. Поэтому мне приходится нажимать на кнопку дважды, один раз, чтобы выбрать ее строку, а затем, чтобы вызвать событие click.
Я читал о похожих проблемах с колонками-чекбоксами, но там, очевидно, предлагалось использовать колонку-шаблон.
Я пробовал использовать событие PreviewMouseDown-Event кнопки, что работает, но это не то, что я хочу, поскольку тогда кнопка не следует своему обычному поведению при нажатии.
Что я здесь упускаю? Как я могу получить событие щелчка, просто щелкнув один раз, независимо от того, был ли выбран ряд или нет?