2013-07-17 3 views
3

Привет, ребята, мой combobox связан с результатами поиска Google.WPF: Использовать значение поля свойства в ComboBox вместо имени объекта.

<ComboBox 
    Style="{StaticResource ComboBoxStyle}" 
    IsEditable="True" 
    IsTextSearchEnabled="False" 
    ItemsSource="{Binding GoogleSuggest.SuggestedQueries}" 
    SelectedItem="{Binding GoogleSuggest.SelectedQuery}" 
    > 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="Auto" /> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 

       <Image Source={Binding IconPath, Converter={StaticResource IconPathToImageSource} Width="32" Height="32" /> 

       <StackPanel Grid.Column="1"> 
        <TextBlock Text="{Binding Query}" Margin="0,8" FontSize="24" /> 
        <TextBlock Text="{Binding URL}" Margin="0,8" FontSize="16" /> 
       </StackPanel> 
      </Grid> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 

Моя модель выглядит следующим образом

public class Model_SuggestedQueries : ViewModelBase 
{ 
    private string _Query = string.Empty; 
    public string Query 
    { 
     get { return _Query; } 
     set 
     { 
      if (_Query != value) 
      { 
       _Query = value; 
       base.RaisePropertyChanged("Query"); 
      } 
     } 
    } 

    private int _Index = 0; 
    public int Index 
    { 
     get { return _Index; } 
     set 
     { 
      if (_Index != value) 
      { 
       _Index = value; 
       base.RaisePropertyChanged("Index"); 
      } 
     } 
    } 

    private string _URL = 0; 
    public string URL 
    { 
     get { return _URL; } 
     set 
     { 
      if (_URL != value) 
      { 
       _URL = value; 
       base.RaisePropertyChanged("URL"); 
      } 
     } 
    } 

    private string _Icon = 0; 
    public string Icon 
    { 
     get { return _Icon; } 
     set 
     { 
      if (_Icon != value) 
      { 
       _Icon = value; 
       base.RaisePropertyChanged("Icon"); 
      } 
     } 
    } 
} 

Но когда я делаю выбор, поле .Text выглядел следующим образом.

enter image description here

Как я могу показать «Query» значение вместо имени объекта?

+0

Попробуйте использовать ''. Это поможет? –

ответ

4

Вы пытались добавить атрибут DisplayMemberPath к вашему контроллеру ComboBox?

<ComboBox 
     Style="{StaticResource ComboBoxStyle}" 
     IsEditable="True" 
     IsTextSearchEnabled="False" 
     ItemsSource="{Binding GoogleSuggest.SuggestedQueries}" 
     SelectedItem="{Binding GoogleSuggest.SelectedQuery}" 
     DisplayMemberPath="Query" 
     > 

Если это не работает, вы можете попытаться переопределить ToString() метода вашего Model_SuggestedQueries класса.

+0

Работа над методом ToString(). DisplayMemberPath не из-за ItemTemplate. Благодаря! –

3

Добавить TextSearch.TextPath="Query" в вашу разметку ComboBox.

См MSDN Textsearch.Textpath

+0

Это тоже работает! Это больше XAMLity, чем переопределение ToString(). –

Смежные вопросы