2013-10-29 71 views
3

我必須在WPF組合框中啓用搜索,在WPF MVVM應用程序中顯示兩列。在WPF組合框中顯示兩列的搜索

下面是我的代碼,該圖是像兩列:名字 - 姓氏

<ComboBox Grid.Column="3" Grid.Row="15" Height="Auto" HorizontalAlignment="Stretch" 
       Name="cmbName" VerticalAlignment="Stretch" 
       SelectedItem="{Binding Name, Mode=TwoWay}" 
       ItemsSource="{Binding GetAllName}" 
       IsTextSearchEnabled="True"> 

     <ComboBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock DataContext="{Binding}"> 
         <TextBlock.Text> 
          <MultiBinding StringFormat="{}{0} - {1}"> 
           <Binding Path="FirstName" /> 
           <Binding Path="LastName" /> 
          </MultiBinding> 
         </TextBlock.Text> 
       </TextBlock> 
      </DataTemplate> 
     </ComboBox.ItemTemplate> 
    </ComboBox> 

我認爲在這種情況下IsTextSearchEnabled不打任何作用。

對此有何幫助?

+0

「我必須啓用搜索」 - 您試圖實現哪種搜索功能?您是否希望根據組合框中的選擇過濾ListView或其他控件中的數據? –

回答

3

在這種情況下,您可以使用TextSearch.TextPath。

<ComboBox Grid.Column="3" Grid.Row="15" Height="Auto" HorizontalAlignment="Stretch" 
       Name="cmbName" VerticalAlignment="Stretch" 
       SelectedItem="{Binding Name, Mode=TwoWay}" 
       ItemsSource="{Binding GetAllName}"> 
     <TextSearch.TextPath>FirstName</TextSearch.TextPath> 
     <ComboBox.ItemTemplate> 
      <DataTemplate> 
       <TextBlock DataContext="{Binding}"> 
         <TextBlock.Text> 
          <MultiBinding StringFormat="{}{0} - {1}"> 
           <Binding Path="FirstName" /> 
           <Binding Path="LastName" /> 
          </MultiBinding> 
         </TextBlock.Text> 
       </TextBlock> 
      </DataTemplate> 
     </ComboBox.ItemTemplate> 
    </ComboBox> 
+0

這是我正在尋找的。謝謝。 – user2519971

-1

你似乎有點困惑。首先,你是而不是在你的ComboBox中顯示兩列,你顯示兩個字段值......也許你應該編輯你誤導性的標題?其次,我不相信你完全理解IsTextSearchEnabled屬性的使用。然而,你正確地使用這個屬性是沒有任何意義的。從MSDN上的ItemsControl.IsTextSearchEnabled Property頁面:

獲取或設置一個值,該值指示是否在ItemsControl實例上啓用TextSearch。

TextSearch Class頁面上MSDN:

這個類是用來分配字符串到控制的藏品。爲集合中的每個項目分配一個字符串實現了兩個目標。它指定了在選擇項目時要顯示的文本,並且允許用戶通過鍵入指定的字符串來選擇項目。

例如,假設一個ComboBox包含一個Image對象的集合,其中一個是一個狗的圖像。如果將字符串「Dog」分配給該項目,則用戶可以通過在組合框的文本框中輸入單詞來選擇狗。只要用戶輸入足夠的單詞來區分它與選擇中的其他項目,就會選擇狗的圖像。如果IsComitable在ComboBox上設置爲true,則文本框中將顯示「Dog」。

您可以通過在控件上使用TextSearch.TextPath屬性或通過在控件集合中的每個項目上設置Text屬性來指定標識項目的文本。設置其中一個屬性可確保不顯示意外的文本。如果在控件的集合項上設置Text屬性,則TextPath屬性將被忽略。如果將TextPath屬性設置爲不是實際屬性名稱的值,則會忽略TextPath。