2010-11-18 4 views
1

Ich habe Sachen in einem DataGridTemplateColumn.CellEditing DataTemplate gesetzt. Ich möchte, dass wenn die Zellenbearbeitung lädt und zeigt die Vorlage, Tastatur-Fokus sollte ein bestimmtes Steuerelement in der Vorlage gegeben werden.Xamly den Tastaturfokus auf ein Element in der DataGridTemplateColumn-Zelle setzen?

dieses Beispiel betrachten, wenn Sie Bearbeitungsmodus zu gehen, ist das Textfeld nicht Tastatur Orientiert:

<Window x:Class="MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Grid> 
    <DataGrid Name="dg" AutoGenerateColumns="False"> 
     <DataGrid.Columns> 
     <DataGridTemplateColumn Header="Title"> 
      <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Title}"/> 
      </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
      <DataGridTemplateColumn.CellEditingTemplate> 
      <DataTemplate> 
       <TextBox Text="{Binding Title}"/> 
      </DataTemplate> 
      </DataGridTemplateColumn.CellEditingTemplate> 
     </DataGridTemplateColumn> 
     <DataGridTemplateColumn Header="Value"> 
      <DataGridTemplateColumn.CellTemplate> 
      <DataTemplate> 
       <TextBlock Text="{Binding Note}"/> 
      </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
      <DataGridTemplateColumn.CellEditingTemplate> 
      <DataTemplate> 
       <TextBox Text="{Binding Note}"/> 
      </DataTemplate> 
      </DataGridTemplateColumn.CellEditingTemplate> 
     </DataGridTemplateColumn> 
     </DataGrid.Columns>  
    </DataGrid> 
    </Grid> 
</Window> 

Class MainWindow 

    Private Sub Window_Loaded(ByVal sender As Object, 
          ByVal e As RoutedEventArgs) Handles MyBase.Loaded 

    Dim data As New List(Of Item) From 
     {New Item, 
     New Item, 
     New Item} 
    dg.ItemsSource = data 
    End Sub 

End Class 

Public Class Item 
    Private Shared Number As Integer = 0 
    Sub New() 
    Number += 1 
    End Sub 
    Public Property Title = "Title " & Number.ToString 
    Public Property Note = "Note " & Number.ToString 
End Class 

Antwort

7

Nun Antwort war eigentlich einfach, die oben genannten Textfelder wie folgt geändert werden sollte:

<TextBox Text="{Binding Title}" 
    FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/> 
<TextBox Text="{Binding Note}" 
    FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/> 
Verwandte Themen