estoy tratando de conseguir un DataGridTemplateColumn a comportarse de forma idéntica a un TextColumn¿Cómo seleccionar todo el texto cuando el cuadro de texto de edición en un DataGridTemplateColumn recibe foco?
- cuando la célula entra en el modo de edición (Pulse F2), el usuario puede inmediatamente empezar a escribir el nuevo valor
- por defecto, se selecciona el contenido de texto existente - para que pueda establecer nuevos valores fácilmente
Se ha hecho el primero; sin embargo, seleccionar todo el texto no funciona. Como se menciona en una serie de publicaciones, intenté conectarme al evento GotFocus y seleccionar todo el texto en código subyacente. Esto funcionó para un cuadro de texto independiente; sin embargo, para un Textbox que es el control de edición para una TemplateColumn, esto no funciona.
¿Alguna idea? Código de ejemplo:
<Window.Resources>
<Style x:Key="HighlightTextBoxStyle" TargetType="{x:Type TextBox}">
<EventSetter Event="GotFocus" Handler="SelectAllText"/>
<EventSetter Event="GotMouseCapture" Handler="SelectAllText"/>
<Setter Property="Background" Value="AliceBlue"/>
</Style>
<DataTemplate x:Key="DefaultTitleTemplate">
<TextBlock Text="{Binding Title}"/>
</DataTemplate>
<DataTemplate x:Key="EditTitleTemplate">
<TextBox x:Name="Fox"
FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"
Text="{Binding Path=Title, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource HighlightTextBoxStyle}">
</TextBox>
</DataTemplate>
</Window.Resources>
<DockPanel>
<TextBox DockPanel.Dock="Top" x:Name="Test" Text="{Binding Path=(FocusManager.FocusedElement).Name, ElementName=MyWindow}"
Style="{StaticResource HighlightTextBoxStyle}"/>
<toolkit:DataGrid ItemsSource="{Binding Items}" AutoGenerateColumns="False">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTemplateColumn Header="Templated Title"
CellTemplate="{StaticResource DefaultTitleTemplate}"
CellEditingTemplate="{StaticResource EditTitleTemplate}" />
<toolkit:DataGridTextColumn Header="Title" Binding="{Binding Path=Title}" />
</toolkit:DataGrid.Columns>
</toolkit:DataGrid>
</DockPanel>
Por lo que puedo decir, este problema aún no se ha resuelto. – Dabblernl
@Dabblernl - prueba si funciona el siguiente parche de cinta de conducto. – Gishu