У меня есть Datagrid, который привязан к источнику данных и использует раскрывающиеся столбцы.
<DataGrid Name="SFGrid1" ItemsSource="{Binding Records,
UpdateSourceTrigger=PropertyChanged}" Margin="39,33,0,26"
SelectionChanged="SFGrid1_SelectionChanged"
HorizontalGridLinesBrush="Black" HorizontalAlignment="Left"
Width="1067" RowEditEnding="SFGrid1_RowEditEnding"
AutoGenerateColumns="False" FontFamily="Cambria">
<DataGrid.Columns>
<DataGridTemplateColumn Header="ID" CanUserSort="True" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<TextBlock Text="{Binding ID}"/>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
Мой RowEditEnding выглядит так
public void SFGrid1_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
var person = e.Row.Item as Person;
MessageBox.Show("updated Record:" + person.id);
}
Моя проблема в том, что когда я перехожу из одной ячейки в другую, RowEditEnding не запускается. Кажется почти, если мне нужно дважды щелкнуть по другой ячейке, и это обычно занимает несколько раз, прежде чем отображать новые данные. Я хотел бы либо запустить его вручную, например, с помощью кнопки, либо, по крайней мере, вызвать его при нажатии на новую строку...
DataGrid.SelectedCellsChanged будет отличной альтернативой RowEditEnding.
<DataGrid Name="SFGrid1" ItemsSource="{Binding Records,
UpdateSourceTrigger=PropertyChanged}" Margin="39,33,0,26"
SelectionChanged="SFGrid1_SelectionChanged"
HorizontalGridLinesBrush="Black" HorizontalAlignment="Left"
Width="1067" SelectedCellsChanged ="SFGrid1_SelectedCellsChanged"
AutoGenerateColumns="False" FontFamily="Cambria">
Увольнение события нажатием кнопки кажется невозможным (для меня), потому что вы используете предоставленный DataGridRowEditEndingEventArgs
который был бы нулевым, если вы вызовете эту функцию вручную.