2013-10-29 83 views
3

我有一個組合框的菜單如下規定:禁用下拉一個WPF組合框

<ComboBox Height="31" Margin="7,7,0,0" Name="callerID" IsEditable="True" Background="LightBlue" KeyDown="callerIDbar_KeyDown" Foreground="White" FontSize="17" FontWeight="Bold" HorizontalContentAlignment="Center" VerticalAlignment="Top" Grid.Row="0" Grid.Column="0" /> 

storedCalls是電話號碼的集合將被填充到ComboBox.Items

foreach (string call in storedCalls) 
{ 
    if (call != "Enter a number to dial") 
     callerID.Items.Add(call); 
} 

所有這工作正常。我填充Items主要是因爲我喜歡由值在ComboBoxItems集合驅動的自動完成。有沒有辦法讓XAML禁用下拉錯誤,並禁用下拉菜單?即使一個簡單的自動完成文本框像控制?

我在TextBox控件上看到完整的控件,其中包括一堆代碼隱藏和複雜的標記,這不是我期待的。我只需要禁用顯示下拉菜單的功能。

+1

我相信你將不得不更改模板。從我所看到的情況來看,這有點大...... – Tico

+1

您正在尋找一個'AutoCompleteTextBox'。您可以在[WPF Toolkit](http://wpf.codeplex.com/releases/view/40535)中找到它。順便說一句,不要操作WPF中的程序代碼中的UI元素。爲此創建一個適當的ViewModel。 –

+0

@Tico您能否稍微詳細說明更改模板以及可能需要的內容?我不是專職的全職WPF開發人員。 – kmarks2

回答

3

您可以處理DropDownOpened事件,然後將其關閉。
所以中有n的XAML你:

<ComboBox x:Name="cb" DropDownOpened="cb_DropDownOpened"/> 

而在代碼背後:

private void cbCategoria_DropDownOpened(object sender, EventArgs e) 
    { 
     ComboBox cb = sender as ComboBox; 
     cb.IsDropDownOpen = false; 
    } 

我prefear這個解決方案reather不是設置您的選擇。