2016-02-25 2 views
1

Я работаю с ComboBox внутри сетки с помощью ComboBoxEditSeting, и я хочу иметь возможность на вкладке в элемент управления, если пользователь нажимает KeyDown/KeyUp, отбрасывает вниз по списку параметров, и пользователь может перемещаться между ними. Я знаю, что на данный момент это возможно, если я нажму Ctrl + KeyUp/Down, но я хочу его без комбинации с контролем. Как это можно достичь?Изменить выбор в ComboBoxEditSettings внутри сетки с помощью KeyUp/Down

Вот пик кода, который у меня до сих пор:

<dxg:GridColumn FieldName="{x:Static model:PromptFieldNames.WFieldName}" Header="{x:Static p:Resources.SubmitTo}" HorizontalHeaderContentAlignment="Left" MinWidth="100" Width="250"> 
    <dxg:GridColumn.EditSettings> 
     <dxe:ComboBoxEditSettings ItemsSource="{Binding DataContext.Ws, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type UserControl}}}" 
            ValueMember="Id" IsTextEditable="False" 
            DisplayMember="Name" ImmediatePopup="True" /> 
    </dxg:GridColumn.EditSettings> 
</dxg:GridColumn> 

ответ

0

Ключевые события обрабатываются на уровне сетки, так что вы должны создать класс GridControl потомок и перегрузить его OnPreviewKeyDown метод:

  public class MyGridControl : GridControl 
      { 
       protected override void OnPreviewKeyDown(KeyEventArgs e) 
       { 
        if (!(View.ActiveEditor is ComboBoxEdit)) 
        { 
         base.OnPreviewKeyDown(e); 
         return; 
        } 

        if (e.Key == Key.Down) 
         ((ComboBoxEdit)View.ActiveEditor).SpinDown(); 

        if (e.Key == Key.Up) 
         ((ComboBoxEdit)View.ActiveEditor).SpinUp(); 

        e.Handled = true; 
       } 
      } 

Но вам нужно активировать редактор клавишей F2 или щелчком ячейки.

Смежные вопросы