как получить выбранные данные из автоматически созадной строки в datagrid wpf?

Всем привет, у меня возникла проблема с извлечением данных из автоматически созданной строки в datagrid. Пока эта строка не будет добавлена в datagrid(например, нажатием Enter или выделением другой строки), я не могу получить из неё данные, а мне надо получить данные до добавления строки( в datagrid). Может быть, кто-то сталкивался с подобной ситуацией и сможет подсказать, как все-таки получить данные из строки до добавления в DataGrid?

вот пример таблицы:

<DataGrid x:Name ="dataGrid2" ItemsSource="{Binding D2vm}" AutoGenerateColumns="False" Margin="0,0,0,106">
<DataGrid.Columns>
    <DataGridTextColumn Header="S1" Binding="{Binding Pokaznuk}" />
    <DataGridTextColumn Header="S2" Binding="{Binding NameGroup}" />
    <DataGridTextColumn Header="S3" Binding="{Binding NumberGroup}"/>
    <DataGridTemplateColumn>
        <DataGridTemplateColumn.CellTemplate>
            <DataTemplate>
                <Button Content="Save" Click="ShowHideDetails2" Background="Red" 
                        Visibility="{Binding IsFromDatabase, Converter={StaticResource BoolToVisibilityConverter}, ConverterParameter=Inverse}"/>
            </DataTemplate>
        </DataGridTemplateColumn.CellTemplate>
    </DataGridTemplateColumn>
</DataGrid.Columns>

Ответы (1 шт):

Автор решения: xellan

Судя по комментариям вам нужно при создание объекта для DataGrid подгружать данные. Для этого вы можете подписаться на событие CollectionChanged у ObservableCollection и сделать нужную обработку.

// Создание ObservableCollection
ObservableCollection<string> myCollection = new ObservableCollection<string>();

// Подписка на событие CollectionChanged
myCollection.CollectionChanged += MyCollection_CollectionChanged;

// Метод-обработчик события CollectionChanged
private void MyCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
    if (e.Action == NotifyCollectionChangedAction.Add)
    {
        foreach (var newItem in e.NewItems)
        {
           //Какая то обработка
        }
    }
}

Полезные ссылки для чтивы: https://www.gangofcoders.net/solution/notify-observablecollection-when-item-changes/ https://metanit.com/sharp/tutorial/4.13.php https://www.itcodar.com/csharp/implementing-collectionchanged.html

Про mvvm простыми словами если вы используете события по типу Click и т.п для работы с View частью это не нарушает mvvm. Но если у вас идет работа с бизнес логикой, то это нарушает паттерн, так как вы используете часть-которая должна быть вынесена в отдельный слой для этого.

→ Ссылка