No se puede editar en la plantilla de edición de celda

programación


Tengo un DataGrid con DataGridTemplateColumn. No puedo editar el campo Comentario. Cuando hago doble clic en un campo Comentario, el fondo cambia como se esperaba. LightSalmon y el contenido de los bienes vinculados Comment Se muestra pero no puedo editar el contenido.

Lo que he probado:

<DataGridTemplateColumn IsReadOnly="False" Header="Comment" MinWidth="80">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock
              Background="LightGray"
                Margin="5"
                MinHeight="35"
                TextAlignment="Center"
                Text="{Binding Comment, Mode=OneWay}"
                IsEnabled="True"
                />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBlock
              Background="LightSalmon"
                Opacity="0.5"
                Margin="5"
                MinHeight="35"
                TextAlignment="Center"
                Text="{Binding Comment}"
                IsEnabled="True"
                />
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>

Solución 1

Gerry dio la solución, para dar más detalles:

TextBlock es un control de solo lectura y es por eso que no puedes editar el contenido cuando haces doble clic en él. MS aprender | Clase de bloque de texto[^]

Para utilizar la edición, debe utilizar un control editable como ‘TextBox’ en su ‘CellEditingTemplate’.

XAML
<DataGridTemplateColumn IsReadOnly="False" Header="Comment" MinWidth="80">
    <DataGridTemplateColumn.CellTemplate>
        <DataTemplate>
            <TextBlock
                Background="LightGray"
                Margin="5"
                MinHeight="35"
                TextAlignment="Center"
                Text="{Binding Comment, Mode=OneWay}"
                IsEnabled="True"
            />
        </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
    <DataGridTemplateColumn.CellEditingTemplate>
        <DataTemplate>
            <TextBox
                Background="LightSalmon"
                Margin="5"
                MinHeight="35"
                TextAlignment="Center"
                Text="{Binding Comment, UpdateSourceTrigger=PropertyChanged}"
                IsEnabled="True"
            />
        </DataTemplate>
    </DataGridTemplateColumn.CellEditingTemplate>
</DataGridTemplateColumn>

El ‘TextBox’ en ‘CellEditingTemplate’ permite la entrada de su usuario, y ‘UpdateSourceTrigger=PropertyChanged’ asegura que la propiedad de origen se actualice a medida que el usuario escribe.

コメント

タイトルとURLをコピーしました