ejemplo column c# wpf xaml wpftoolkit wpfdatagrid

c# - column - datagrid wpf ejemplo



El CellEditingTemplate de DataGrid y el enfoque en modo de ediciĆ³n (3)

Estoy teniendo un problema con WPFToolkit DataGrid cuando una columna se personaliza y proporciona CellTemplate y CellEditingTemplate . Si echa un vistazo a continuación, verá que mi plantilla de edición tiene un solo CheckBox . Todo está bien en un sentido funcional, pero cuando se pulsa F2 para editar la celda, también se debe presionar TAB para que el CheckBox reciba el foco. Idealmente, uno presionaría F2 y SPACE para cambiar el valor. Actualmente, uno debe golpear F2, TAB, ESPACIO. He intentado configurar TabIndex en vano. Me estoy quedando sin ideas.

<WPFToolkit:DataGridTemplateColumn Header="Turn" MinWidth="60"> <WPFToolkit:DataGridTemplateColumn.CellTemplate> <DataTemplate> <Image Height="16"> <Image.Style> <Style TargetType="{x:Type Image}"> <Style.Triggers> <DataTrigger Binding="{Binding CanTurn}" Value="True"> <Setter Property="Source" Value="/Images/16/Tick.png" /> </DataTrigger> </Style.Triggers> </Style> </Image.Style> </Image> </DataTemplate> </WPFToolkit:DataGridTemplateColumn.CellTemplate> <WPFToolkit:DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <CheckBox IsChecked="{Binding Path=CanTurn}" HorizontalAlignment="Center" HorizontalContentAlignment="Center" /> </DataTemplate> </WPFToolkit:DataGridTemplateColumn.CellEditingTemplate> </WPFToolkit:DataGridTemplateColumn>


O esto...

<DataGridTemplateColumn Header="Long" IsReadOnly="False" Width="100"> <DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <CheckBox FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}" IsChecked="{Binding Path=CanTurn}" HorizontalAlignment="Center" HorizontalContentAlignment="Center" /> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate> </DataGridTemplateColumn>


Prueba esto

<DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <CheckBox Name="checkbox" IsChecked="{Binding Path=CanTurn}" HorizontalAlignment="Center" HorizontalContentAlignment="Center" /> <DataTemplate.Triggers> <Trigger SourceName="checkbox" Property="IsVisible" Value="True"> <Setter TargetName="checkbox" Property="FocusManager.FocusedElement" Value="{Binding ElementName=checkbox}" /> </Trigger> </DataTemplate.Triggers> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate>


Si desea establecer el enfoque en la edición y seleccionar el texto dado por un enlace, intente esto.

<DataGridTemplateColumn.CellEditingTemplate> <DataTemplate> <TextBox Text="{Binding Parameter0, Mode=TwoWay}" Loaded="TbLoaded" /> </DataTemplate> </DataGridTemplateColumn.CellEditingTemplate>

código detrás:

private void TbLoaded(object sender, EventArgs e) { TextBox tb = sender as TextBox; if (tb == null) return; tb.SelectAll(); FocusManager.SetFocusedElement(this, tb); }