选择ComboBox文本

3

我有一个声明如下的 ComboBox:

<ComboBox Name="txtUserName" IsEditable="True" />

我希望在ComboBox获得焦点时选择文本字段,但我不知道如何做到这一点。目前,当程序化地将焦点放在ComboBox上(通过“txtUserName.Focus()”)时,它允许用户滚动浏览不同的项目,但需要额外的单击才能突出显示文本字段。
你有什么想法吗?

2
这可能是ComboBox默认处理焦点的方式。如果您想更改此设置,您需要深入了解。有一些类似的问题,它们可能会很有用:问题一问题二 - icebat
什么意思?当我使用箭头滚动时,它会被突出显示。 - paparazzo
在你的第一个链接 @icebat 中找到了解决方案。 - mastur cheef
3个回答

1
我使用的解决方案是在窗口加载事件中添加以下代码:
var textBox = (txtUserName.Template.FindName("PART_EditableTextBox", txtUserName) as TextBox);
if (textBox != null)
{
      textBox.Focus();
      textBox.SelectionStart = textBox.Text.Length;
 }

这个解决方案来自于这里提供的一个建议答案: 如何在WPF中为可编辑的ComboBox添加焦点


0
尝试添加类似于下面的comboBox模板:
<ComboBox Name="txtUserName" IsEditable="True">
        <ComboBox.Template>
          <ControlTemplate>
              <TextBox Text="{Binding Path=/*your property*/}"/>
           </ControlTemplate>
         </ComboBox.Template>
 </ComboBox>

0

试试这个:

if (txtUserName.Items.Count > 0)
{
    txtUserName.SelectedIndex = 0;
}

另外,您可能希望使用不同的前缀,例如“cbo”。 代码的其他读者会认为它是一个文本框,而不是组合框。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接