我有一个ComboBox声明如下:
<ComboBox Name="txtUserName" IsEditable="True" />
我想在焦点上选择ComboBox的文本字段,但我无法弄清楚如何执行此操作。目前,当ComboBox以编程方式(通过“txtUserName.Focus()”)聚焦时,它允许用户滚动浏览不同的项目,但需要额外点击以突出显示文本字段。
有什么想法吗?
答案 0 :(得分:0)
试试这个:
if (txtUserName.Items.Count > 0)
{
txtUserName.SelectedIndex = 0;
}
此外,您可能希望使用不同的前缀,例如“cbo”。 该代码的其他读者将假设它是一个文本框,而不是组合框。
答案 1 :(得分:0)
尝试添加comboBox模板,如下所示:
<ComboBox Name="txtUserName" IsEditable="True">
<ComboBox.Template>
<ControlTemplate>
<TextBox Text="{Binding Path=/*your property*/}"/>
</ControlTemplate>
</ComboBox.Template>
</ComboBox>
答案 2 :(得分:0)
我使用的解决方案是将以下代码添加到窗口加载的事件中:
var textBox = (txtUserName.Template.FindName("PART_EditableTextBox", txtUserName) as TextBox);
if (textBox != null)
{
textBox.Focus();
textBox.SelectionStart = textBox.Text.Length;
}
解决方案来自这里建议的答案之一:How to add a focus to an editable ComboBox in WPF