我有一个声明如下的 ComboBox:
<ComboBox Name="txtUserName" IsEditable="True" />
我希望在ComboBox获得焦点时选择文本字段,但我不知道如何做到这一点。目前,当程序化地将焦点放在ComboBox上(通过“txtUserName.Focus()”)时,它允许用户滚动浏览不同的项目,但需要额外的单击才能突出显示文本字段。
你有什么想法吗?
我有一个声明如下的 ComboBox:
<ComboBox Name="txtUserName" IsEditable="True" />
var textBox = (txtUserName.Template.FindName("PART_EditableTextBox", txtUserName) as TextBox);
if (textBox != null)
{
textBox.Focus();
textBox.SelectionStart = textBox.Text.Length;
}
这个解决方案来自于这里提供的一个建议答案: 如何在WPF中为可编辑的ComboBox添加焦点
<ComboBox Name="txtUserName" IsEditable="True">
<ComboBox.Template>
<ControlTemplate>
<TextBox Text="{Binding Path=/*your property*/}"/>
</ControlTemplate>
</ComboBox.Template>
</ComboBox>
试试这个:
if (txtUserName.Items.Count > 0)
{
txtUserName.SelectedIndex = 0;
}
另外,您可能希望使用不同的前缀,例如“cbo”。 代码的其他读者会认为它是一个文本框,而不是组合框。