我正在使用ComboBoxEditSeting在网格内使用ComboBox,我希望能够在Tab上插入控件,如果用户按下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>
答案 0 :(得分: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键或单击“单击”激活编辑器。