Silverlight DataGrid многоконтрольная проблема TemplateColumn TabIndex - PullRequest
1 голос
/ 04 октября 2010

В SL4 DataGrid у меня есть следующий мультиконтрольный столбец:

<sdk:DataGridTemplateColumn Header="Address Line1&#x0a;Address Line 2" MinWidth="200">
  <sdk:DataGridTemplateColumn.CellTemplate>
    <DataTemplate>
      <StackPanel>
        <TextBlock Text="{Binding Path=Address1}"/>
        <TextBlock Text="{Binding Path=Address2}"/>
      </StackPanel>
    </DataTemplate>
  </sdk:DataGridTemplateColumn.CellTemplate>
  <sdk:DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
      <StackPanel>
        <TextBox Background="Transparent" BorderThickness="0" 
                 TabIndex="0"
                 Text="{Binding Path=Address1, Mode=TwoWay}"/>
        <TextBox Background="Transparent" BorderThickness="0" 
                 TabIndex="1"
                 Text="{Binding Path=Address2, Mode=TwoWay}"/>
      </StackPanel>
    </DataTemplate>
  </sdk:DataGridTemplateColumn.CellEditingTemplate>
</sdk:DataGridTemplateColumn>

В режиме редактирования нажатие клавиши Tab, когда по адресу address1 перемещает фокус на следующий столбец DataGrid, но не на поле address2. Если вместо этого я удаляю CellTemplate и CellEditingTemplate как CellTemplate, TabIndex работает должным образом, однако текущий столбец остается прежним, поэтому, если в сетке данных много столбцов, некоторые из которых скрыты, автоматическая прокрутка не происходит. Что я должен сделать, чтобы решить эту проблему?

Ответы [ 2 ]

1 голос
/ 14 августа 2013

Немного поздно, но я нашел обходной путь для этой проблемы.

Просто добавьте KeyDown EventHandler в свой CustomControl:

private void address1_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key.Equals(Key.Tab) && address2.IsEnabled)
    {
        address2.Focus();
        e.Handled = true;
    }
}
0 голосов
/ 06 октября 2010

Вероятно, иметь несколько элементов управления внутри ячейки данных - плохая идея.Если внутри ячейки должно быть несколько элементов управления, то лучше создать собственный составной элемент управления и поместить его в ячейку.

...