Измените выделение для ComboBoxEditSettings внутри сетки, используя KeyUp/Down
Я работаю с ComboBox внутри сетки, используя ComboBoxEditSeting, и я хочу иметь возможность на вкладке в элементе управления, если пользователь нажимает 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>
1 ответ
Ключевые события обрабатываются на уровне сетки, поэтому вам нужно создать потомка класса 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 или щелчком ячейки.