2013-11-01 108 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>