2010-11-18 78 views
1

DataGridTemplateColumn.CellEditing DataTemplateにstuffを設定しました。 セルの編集が読み込まれてテンプレートが表示されるときに、テンプレートの特定のコントロールにキーボードフォーカスを与える必要があります。Xamlyは、キーボードフォーカスをDataGridTemplateColumnセルの要素に設定しますか?

を使用すると、編集モードに行くとき、テキストボックスがキーボードに焦点を当てていない、この例を考えてみましょう:

<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 

答えて

7

まあ答えは実際に簡単だった、次のように、上記のテキストボックスを変更する必要があります。

<TextBox Text="{Binding Title}" 
    FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/> 
<TextBox Text="{Binding Note}" 
    FocusManager.FocusedElement="{Binding RelativeSource={RelativeSource Self}}"/> 
関連する問題