2011-10-12 64 views
0

我有一個組合框在WPF中使用以下數據模板。在論壇的幫助下,我能夠得到這個顯示和行爲正確。WPF組合框使用快捷鍵來選擇項目

當下拉打開時,我希望用戶能夠鍵入一個字母並讓下拉菜單跳到該選擇。我已經看到這實現了兩種方式,一種方式是在組合框中的文本框中基本捕獲鍵盤輸入,並根據用戶輸入的內容進行選擇。這允許用戶等待並輸入更多的文字,以增加標準。另一個是鍵盤輸入似乎沒有被捕獲到的地方,如果你鍵入一個字母,等待幾秒鐘,然後輸入另一個字母,它將把你帶到選擇的第二個字母開頭。如果您想輸入搜索條件的多個字母,則必須快速輸入。

我對任何一種方法都很滿意。他們只能選擇一個項目,雖然它在列表中,所以我不太喜歡在組合框上放置編輯控件的想法,他們可以在其中輸入任何他們想要的內容。我可以做到這一點,並驗證他們的輸入,但寧願強迫他們選擇列表中的東西。

在這種情況下,它是一個系統顏色的列表,其中超過140個,所以有一種方法可以快速繞過列表是我需要的。

這是我使用的數據模板。

<DataTemplate x:Key="ColorSelectionComboBox" DataType="ComboBox"> 
     <StackPanel Orientation="Horizontal"> 
      <Rectangle Width="16" Height="16" Margin="0,2,4,2"> 
       <Rectangle.Fill> 
        <SolidColorBrush Color="{Binding Color}"/> 
       </Rectangle.Fill> 
      </Rectangle> 
      <TextBlock Text="{Binding Name}"/> 
     </StackPanel> 
    </DataTemplate> 

任何想法表示讚賞。

+0

是否需要類似自動填充框的東西,並在下拉列表中列出建議? http://wpfactb.codeplex.com/ –

+0

是的,那太棒了。 – WPFNewbie

回答

0

ComboBox內置支持增量搜索使用鍵盤。我實際上沒有使用它(所以我不能幫助進行高級故障排除),但我知道它在那裏。

看起來您需要將ComboBox的IsTextSearchEnabled屬性設置爲true,然後將TextSearch.TextPath附加屬性設置爲要搜索的文本的綁定路徑(可能爲「Name」以與TextBlock文本對應)。

+0

太好了,那是我需要的。 – WPFNewbie