我有一个 ComboBox 声明如下:
<ComboBox Name="txtUserName" IsEditable="True" />
我想在焦点上选择组合框的文本字段,但我不知道如何做到这一点。目前,当 ComboBox 以编程方式聚焦时(通过“txtUserName.Focus()”),它允许用户滚动浏览不同的项目,但需要额外单击以突出显示文本字段。
有什么想法吗?
我使用的解决方案是将以下代码添加到窗口的加载事件中:
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
尝试这个:
if (txtUserName.Items.Count > 0)
{
txtUserName.SelectedIndex = 0;
}
此外,您可能希望使用不同的前缀,例如“cbo”。代码的其他读者会认为它是一个文本框,而不是一个组合框。
尝试像这样添加组合框模板:
<ComboBox Name="txtUserName" IsEditable="True">
<ComboBox.Template>
<ControlTemplate>
<TextBox Text="{Binding Path=/*your property*/}"/>
</ControlTemplate>
</ComboBox.Template>
</ComboBox>