2011-10-27 42 views
1

自動完成了WPF編輯ComboBox包括分離器控制顯示System.Windows.Controls.Separator。自動完成了WPF編輯ComboBox包括分離器控制顯示System.Windows.Controls.Separator

有了這個XAML:

<ComboBox IsEditable="true"> 
    <ComboBoxItem Content="aaaaa"/> 
    <ComboBoxItem Content="bbbbb"/> 
    <ComboBoxItem Content="ccccc"/> 
</ComboBox> 

用戶可以開始使用到c打字,自動完成其餘字符。 a會變成aaaaa,b會變成bbbbb等等。

然而,問題是,如果我要添加分隔,使他們中的一些從自動完成豁免。 我想這一個:

<ComboBox IsEditable="true"> 
    <ComboBoxItem Content="aaaaa"/> 
    <ComboBoxItem Content="bbbbb"/> 
    <Separator IsEnabled="false"/> 
    <ComboBoxItem Content="ccccc" IsEnabled="false"/> 
</ComboBox> 

當我打C,組合框仍顯示CCCCC作爲首選。 (!) 此外,當我打S時,奇怪的組合框顯示System.Windows.Controls.Separator作爲選擇(!)

我的期望是自動完成只支持輸入a和b,因爲其他兩個(Separator和ccccc)是設置爲IsEnabled =「false」。

有沒有解決方案? 請讓我知道。

回答

1

使用項目集合引進一些東西,看起來像一個頭很可能不是一個好主意,你會遇到各種各樣的問題,包括這一項。您可能是完全的ComboBox或自定義的控制,這一功能提供屬性創建自定義Template的更好。

+0

哎呀。對不起,我犯了一個錯誤是我寫了「Header」,但我的意思是xaml中的「內容」。這會影響你的答案嗎?無論如何,非常感謝你的回答。 – Aki24x

+1

@Aki24x:不,我沒注意到,當我試過你的代碼時。 –

+0

我明白了。所以,基本上我不應該包含不屬於ComboBox的東西,例如Separator。我會考慮編寫自定義模板。非常感謝你! – Aki24x

0

爲未來遊客的另一種回答:我今天遇到了這個問題,並沒有想通過爲接受的答案提出了創建自定義模板的所有工作。

對我來說,名單非常有限,所以我將TextSearch.Text附屬屬性設置爲Separator,這個屬性不太可能被輸入。這裏我使用了版權符號:

<ComboBox IsEditable="true"> 
<ComboBoxItem Content="aaaaa"/> 
<ComboBoxItem Content="bbbbb"/> 
<Separator IsEnabled="false" TextSearch.Text="&#xA9;"/> 
<ComboBoxItem Content="ccccc" IsEnabled="false"/> 
</ComboBox>