我有一个ComboBox声明如下:选择组合框的文本
<ComboBox Name="txtUserName" IsEditable="True" />
我想选择焦点组合框的文本字段,但我无法弄清楚如何做到这一点。目前,当ComboBox以编程方式聚焦(通过“txtUserName.Focus()”)时,它允许用户滚动浏览不同的项目,但需要额外的点击以突出显示文本字段。
有什么想法?
我有一个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>
这可能是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
你是什么意思?当我使用箭头滚动它的亮点。 – Paparazzi
在您的第一个链接@icebat中找到解决方案 –