3

我有一个 ComboBox 声明如下:

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

我想在焦点上选择组合框的文本字段,但我不知道如何做到这一点。目前,当 ComboBox 以编程方式聚焦时(通过“txtUserName.Focus()”),它允许用户滚动浏览不同的项目,但需要额外单击以突出显示文本字段。

有什么想法吗?

4

3 回答 3

1

我使用的解决方案是将以下代码添加到窗口的加载事件中:

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

于 2013-11-01T14:57:25.613 回答
0

尝试这个:

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

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

于 2013-11-01T14:35:52.827 回答
0

尝试像这样添加组合框模板:

<ComboBox Name="txtUserName" IsEditable="True">
        <ComboBox.Template>
          <ControlTemplate>
              <TextBox Text="{Binding Path=/*your property*/}"/>
           </ControlTemplate>
         </ComboBox.Template>
 </ComboBox>
于 2013-11-01T14:37:05.660 回答