Извлечение значений строк данных

1

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

Теги:
wpf
datagrid

1 ответ

0

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 который был бы нулевым, если вы вызовете эту функцию вручную.

  • 0
    Спасибо. Когда я использую выбранный измененный, я все еще не могу получить отредактированное значение, я могу только получить оригинал. Я использую SFGrid1.CurrentItem.
  • 0
    Ну, есть несколько событий, которые вы можете проверить. SelectionChanged может быть то, что вы ищете. Тем не менее, использование чего-то вроде события OnKeyDown также может быть полезно для архивации, хотя его использование может негативно повлиять на вашу производительность.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню