2013-11-01 60 views
3

我有一个ComboBox声明如下:选择组合框的文本

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

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

有什么想法?

+2

这可能是ComboBox默认处理焦点的方式。如果你想改变这一点,你必须更深入。有一些类似的问题,它们可能是有用的:[问题一](http://stackoverflow.com/questions/2963462/how-to-add-a-focus-to-an-editable-combobox-in-wpf) ,[问题二](http://stackoverflow.com/questions/2151285/wpf-selecting-all-the-text-in-and-setting-focus-to-a-comboboxs-editable-textbo)。 – icebat

+0

你是什么意思?当我使用箭头滚动它的亮点。 – Paparazzi

+0

在您的第一个链接@icebat中找到解决方案 –

回答

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

0

试试这个:

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

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

0

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

<ComboBox Name="txtUserName" IsEditable="True"> 
     <ComboBox.Template> 
      <ControlTemplate> 
       <TextBox Text="{Binding Path=/*your property*/}"/> 
      </ControlTemplate> 
     </ComboBox.Template> 
</ComboBox>