Как получить доступ к данным внутри текстового блока в DataGrid.RowDetailsTemplate

#c# #wpf #xaml

#c# #wpf #xaml

Вопрос:

Как я могу получить данные из TextBlock Name="txtSellerId"

 <Grid Margin="10">
        <DataGrid Name="dgUsers" AutoGenerateColumns="False"  LoadingRowDetails="dgUsers_LoadingRowDetails">
            <DataGrid.Columns>
            </DataGrid.Columns>
            <DataGrid.RowDetailsTemplate >
                <DataTemplate >
<DockPanel Background="GhostWhite">
<grid>
<TextBlock Name="txtSellerId" Text="{Binding SellerId, StringFormat=d}" Grid.Column="1" Grid.Row="2" />
                        </Grid>

                    </DockPanel>
                </DataTemplate>

            </DataGrid.RowDetailsTemplate>

        </DataGrid>
  

Комментарии:

1. Поскольку вы привязываете значения, почему вы не работаете с данными в своей viewmodel, а не получаете данные обратно из пользовательского интерфейса?

Ответ №1:

Чтобы получить значение программно, вы можете попробовать этот метод

 dgUsers.LoadingRowDetails  = dgUsers_LoadingRowDetails;

 void dgUsers_LoadingRowDetails(object sender, DataGridRowDetailsEventArgs e)
       {
         var textBlockValue = (e.DetailsElement as FrameworkElement).FindName("txtSellerId") as TextBlock;
       }    
  

Ответ №2:

Вы можете привязать модель к строкам таблицы данных и использовать ее в коде.

 var user = (User)myDataGrid.SelectedItem;
var userId = user.Id;
  

Простой пример: DataGrid с подробными сведениями о строке