¿Cómo cambiar el texto de TextBlock que está en DataTemplate of Row Details para cada DataGrid Row Details?
Tengo Datagrid que hace clic con el mouse en cada fila y muestra detalles de la fila de la cuadrícula de datos. aquí está el código,
Microsoft.Windows.Controls.DataGridRow row = (Microsoft.Windows.Controls.DataGridRow)(DataGrid1.ItemContainerGenerator.ContainerFromItem(DataGrid1.SelectedItem));
DataGridDetailsPresenter presenter = FindVisualChild<DataGridDetailsPresenter>(row);
DataTemplate template = presenter.ContentTemplate;
TextBlock txt = (TextBlock)template.FindName("rowdetails", presenter);
txt.Text = retString;
Y también tengo Checkbox, cuando lo marcas, debería mostrar todos los detalles de la fila. Estoy intentando este código para mostrar todos los detalles de fila
if ((bool)chkboxRowDetails.IsChecked)
{
DataGrid1.RowDetailsVisibilityMode = Microsoft.Windows.Controls.DataGridRowDetailsVisibilityMode.Visible;
for (int i = 0; i < DataGrid1.Items.Count-1; i++)
{
Microsoft.Windows.Controls.DataGridRow row = (Microsoft.Windows.Controls.DataGridRow)(DataGrid1.ItemContainerGenerator.ContainerFromIndex(i));
DataGridDetailsPresenter presenter = FindVisualChild<DataGridDetailsPresenter>(row);
DataTemplate template =presenter.ContentTemplate;
TextBlock txt = (TextBlock)template.FindName("rowdetails", presenter);
txt.Text = retString;
}
Pero está dando error. "Esta operación solo es válida en los elementos que tienen esta plantilla aplicada". Mostrando en línea TextBlock txt = (TextBlock) template.FindName ("rowdetails", presentador); ¿Tienes alguna idea de lo que está mal en mi código? Quiero mostrar todos los detalles de la fila marcando la casilla de verificación. Mi plantilla de datos está aquí
<WpfToolkit:DataGrid.RowDetailsTemplate>
<DataTemplate>
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical" Margin="5">
<TextBlock Foreground="CadetBlue" FontSize="14"
TextWrapping="Wrap" Name="rowdetails" HorizontalAlignment="Stretch"
/>
</StackPanel>
</DataTemplate>
</WpfToolkit:DataGrid.RowDetailsTemplate>