1

我正在使用 ComboBoxEditSeting 在网格内使用 ComboBox,并且我希望能够在选项卡上进入控件,如果用户按下 KeyDown/KeyUp,则下拉选项列表并且用户可以在它们之间导航。我知道目前如果我按下 Ctrl+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>
4

1 回答 1

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 键或单击单元格来激活编辑器。

于 2016-03-02T16:27:04.803 回答