El encabezado de fila de la cuadrícula de datos no cambia de tamaño al contenido

Será

Estoy personalizando un DataGrid para que el usuario pueda ingresar información directamente en el encabezado a través de un TextBox.

El problema que tengo es que los encabezados de fila no cambian de tamaño para coincidir con el tamaño del contenido cuando cambia el texto:

Antes de: ingrese la descripción de la imagen aquí

Después: ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Como puede ver, el tamaño del encabezado no se reduce para coincidir con los cuadros de texto una vez que el tamaño del cuadro de texto se ha reducido para que coincida con el nuevo texto.

De acuerdo con los requisitos de ejemplo mínimos, completos y verificables :

<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:l="clr-namespace:MCVE"
    xmlns:lib="clr-namespace:System;assembly=mscorlib"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    x:Class="MCVE.MainWindow"
    mc:Ignorable="d" Title="MainWindow" Height="450" Width="800">
    <Window.Resources>
        <x:Array x:Key="Source" Type="{x:Type lib:String}">
            <lib:String>Foo</lib:String>
            <lib:String>Bar</lib:String>
            <lib:String>Baz</lib:String>
        </x:Array>
    </Window.Resources>
    <DataGrid
        AutoGenerateColumns="False"
        ItemsSource="{StaticResource Source}"
        RowHeight="50">
        <DataGrid.RowHeaderStyle>
            <Style TargetType="{x:Type DataGridRowHeader}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate>
                            <TextBox FontSize="36" HorizontalAlignment="Left" Text="This Is A Test" />
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
        </DataGrid.RowHeaderStyle>
    </DataGrid>
</Window>

Escriba algunas cosas en cualquiera de los encabezados de fila. Luego, límpialo para reproducirlo.

Entonces, ¿qué puedo hacer para hacer cumplir el ancho del encabezado de la fila y asegurarme de que mantiene el ancho más pequeño posible (sin invadir el contenido real del encabezado de la fila)?

mm8

Puede manejar el SizeChangedevento para los TextBoxelementos y realizar un seguimiento de su ancho. Prueba esto:

private readonly Dictionary<TextBox, double> _widths = new Dictionary<TextBox, double>();
private void TextBox_SizeChanged(object sender, SizeChangedEventArgs e)
{
    TextBox textBox = (TextBox)sender;
    _widths[textBox] = textBox.ActualWidth;

    double largestWidth = _widths.Values.Max();
    DataGridRowHeader header = FindParent<DataGridRowHeader>(textBox);
    dg.RowHeaderWidth = double.NaN;
    if (header != null)
        dg.RowHeaderWidth = dg.RowHeaderActualWidth > largestWidth ? largestWidth : double.NaN;
}

XAML:

<DataGrid.RowHeaderStyle>
    <Style TargetType="{x:Type DataGridRowHeader}">
        <Setter Property="Width" Value="Auto" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate>
                    <TextBox FontSize="36" HorizontalAlignment="Left" Text="This Is A Test"
                                           SizeChanged="TextBox_SizeChanged" />
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
</DataGrid.RowHeaderStyle>

Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.

En caso de infracción, por favor [email protected] Eliminar

Editado en
0

Déjame decir algunas palabras

0Comentarios
Iniciar sesiónRevisión de participación posterior

Artículos relacionados

El contenido de un elemento de la cuadrícula cambia su tamaño

La cuadrícula con GridSplitter cambia de tamaño incorrectamente al cambiar el tamaño de la ventana principal

Establecer la imagen en el encabezado de la fila de cuadrícula de datos a través de xaml

¿Cuál es el tamaño de fuente predeterminado del texto en la fila de una cuadrícula de datos?

Cuadrícula de kendo ¿Cómo puedo mostrar el contenido de la fila al pasar el mouse sobre cada columna ya que mis datos son enormes?

CSS Grid cambia el tamaño de la pista cuando la cuadrícula anidada cambia de tamaño

evitar que el contenido aumente el tamaño de la columna de la cuadrícula CSS

Resolver el contenido de la cuadrícula

Llene el contenido del niño DIV al diseño general de la cuadrícula

La ventana no cambia de tamaño al contenido

CSS: el contenido de una fila de la cuadrícula está desbordando la página

ScalaFX (JavaFX): el contenido del escenario no cambia de tamaño al cambiar el tamaño de la ventana

Contenido de fila de tamaño automático de cuadrícula CSS con desbordamiento

Cambiar el diseño de la fila a la cuadrícula en el cambio de tamaño de la pantalla

Alinear el encabezado de columna de la cuadrícula de datos con botones agrupados

Haga clic en el elemento dentro del encabezado de columna de la cuadrícula de datos

Centrar elementos dentro de la cuadrícula Bootstrap al cambiar el tamaño de la ventana

¿Cómo evitar que la cuadrícula de Bootstrap 4 divida el contenido de la columna en dos al cambiar el tamaño?

Figcaption único cambia el tamaño de la imagen en el diseño de la cuadrícula

El filtro de fila de la cuadrícula de datos devuelve menos de

Reorganización de la cuadrícula de reacción cuando se cambia el tamaño de la pantalla

Obtener el día de los datos a partir de la fecha al seleccionar la fila de vista de cuadrícula de datos

Orden de vista de cuadrícula de datos al hacer clic en el encabezado, usando el comparador de cadenas linq

La columna de la cuadrícula no se colapsa para ajustarse al contenido después de cambiar el tamaño del ancho

¿Por qué ya tengo el encabezado de columna en la cuadrícula de datos?

¿Por qué ya tengo el encabezado de columna en la cuadrícula de datos?

¿Cómo colocar la columna de cuadrícula de datos al final de la fila de cuadrícula de datos en wpf?

Labe fuera de la vista de cuadrícula de datos no se actualiza en el índice seleccionado de la fila de cuadrícula de datos ASP.NET

WPF pasa el objeto al convertidor de cuadrícula de datos y cambia el color de una celda

TOP Lista

CalienteEtiquetas

Archivo