我有一个multiselectCombobox。我想在按下键的同时打开它并专注于文本框。然后按下键,专注于项目来源中的项目。
我使用this。但我在弹出窗口中添加了一个文本框,用于搜索列表。
我在UserControl上添加PreviewKeyDown
,
private void UserControl_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (e.Key == Key.Down)
{
var toggle = (ToggleButton)MultiSelectCombo.Template.FindName("ToggleButton", MultiSelectCombo);
var txt = (TextBox)MultiSelectCombo.Template.FindName("searchTextBox", MultiSelectCombo);
toggle.IsChecked = true;
txt.Focus();
}
}
当控件为焦点且用户按下键,打开弹出窗口并对焦文本框时。
我想在文本框中按下键时聚焦项目,我提升了TextBox的PreviewKeyDown,但提高了UserControl的键,并专注于Textbox。
如何解决?
修改
我使用此代码但仅关注文本框。
答案 0 :(得分:0)
PreviewKeyDown
是隧道路由事件,因此在捕获UserControl之前,您无法捕获TextBox上的PreviewKeyDown
。
所以,你应该建立像
private void UserControl_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (!ComboBoxTest.IsFocused)
{
ComboBoxTest.Focus();
}
else if (ComboBoxTest.IsFocused)
{
}
}