none
Foco en una celda determinada de un DataGrid en WPF RRS feed

  • Pregunta

  • Buenas tardes gente. Lo que estoy tratando de hacer es que al presionar una tecla en el DataGrid

    me lleve a la primer coincidencia que encuentre.

    El siguiente código me funciona para setear como seleccionado el elemento que coincida. Pero el foco no se mueve.

    como asigno el foco a la celda donde está el elemento encontrado?

    Muchas gracias!

    <DataGrid Name="dgPlantillas" HeadersVisibility="None" ItemsSource="{Binding}" AutoGenerateColumns="False" 
                        GridLinesVisibility="None" CanUserReorderColumns="False" CanUserResizeColumns="False" 
                        CanUserSortColumns="False" CanUserResizeRows="False" Focusable="False" SelectionMode="Single" 
                        IsReadOnly="True" Height="auto" MouseDoubleClick="dgPlantillas_MouseDoubleClick" 
                              AlternatingRowBackground="#FFECECF8" 
                              KeyDown="dgPlantillas_KeyDown">
                    <DataGrid.Background>
                        <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                            <GradientStop Color="White" Offset="0" />
                            <GradientStop Color="#FFDBDBDB" Offset="0.995" />
                        </LinearGradientBrush>
                    </DataGrid.Background>
                    <DataGrid.Columns>
                        <DataGridTemplateColumn Header="Img">
                            <DataGridTemplateColumn.CellTemplate>
                                <DataTemplate>
                                    <Image Margin="5,0,2,0" Source="/wpfInfoUltimo;component/Images/paper16.png" Stretch="Fill" 
                            UseLayoutRounding="True" SnapsToDevicePixels="True" Width="16" Height="16" />
                                </DataTemplate>
                            </DataGridTemplateColumn.CellTemplate>
                        </DataGridTemplateColumn>
                        <DataGridTextColumn Header="rutaArchivos" Visibility="Hidden" Binding="{Binding Ruta}"/>
                        <DataGridTextColumn Header="Plantillas" Binding="{Binding Nombre}"/>
                    </DataGrid.Columns>
                </DataGrid>

    private void dgPlantillas_KeyDown(object sender, KeyEventArgs e)
            {
                foreach (ArchivosPlantilla p in ControlDatos.ListaArchivosPlantilla)
                {
                    if (p.Nombre.Substring(0, 1).ToUpper() == e.Key.ToString())
                    {
                        dgPlantillas.SelectedItem = p;
                    }
                }
            }
    martes, 5 de abril de 2016 22:20