Изменение данных для ComboBox в WPF - PullRequest
0 голосов
/ 25 октября 2011

Итак, у меня есть ComboBox с данными в нем, и он работает так, как они хотят:

<ComboBox Grid.Column="1" x:Name="MyComboBox" Margin="2, 0, 2, 0" 
                          ItemsSource="{Binding Path=MySamples}" DisplayMemberPath="SampleName" SelectedValue="{Binding Path=MySample}" 
                          SelectionChanged="OnComboBoxChanged" FontSize="11" FontFamily="Arial"/>

Однако теперь они хотят, чтобы ItemsSource был проиндексирован.Так что это должно быть что-то вроде:

some #: SampleName

Есть ли простой способ сделать это изменение только для выпадающего списка ComboBox без изменения архитектуры?Я не могу изменить сам список, поскольку в других областях карты это просто SampleName без индекса.Спасибо.

1 Ответ

1 голос
/ 25 октября 2011

Если ваш ItemsSource является сложным типом:

public class MyClass
{
    public int Index { get; set; }
    public string Name { get; set; }
}

Затем используйте свойство DisplayMemberPath ComboBox для управления отображаемым объектом.В этом случае вы добавите:

DisplayMemberPath="SampleName"

к определению ComboBox.

Если вместо этого вы хотите отобразить как индекс, так и имя, то вам нужно будет определить ItemTemplateдля ComboBox:

<ComboBox ....>
  <ComboBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Index}" />
        <TextBlock Text=" : " />
        <TextBlock Text="{Binding Name}" />
      </StackPanel>
    </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...