在WPF中更改ComboBox的数据

时间:2011-10-24 21:34:29

标签: c# wpf

所以我有一个包含数据的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下拉进行此更改?我无法更改List本身,因为在地图的其他区域,它只是没有索引的SampleName。感谢。

1 个答案:

答案 0 :(得分:1)

如果您的ItemsSource是复杂类型:

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

然后使用ComboBox的{​​{3}}属性来控制显示的内容。在这种情况下,您需要添加:

DisplayMemberPath="SampleName"

ComboBox定义。

如果你想显示索引和名称,那么你需要为ComboBox定义一个ItemTemplate:

<ComboBox ....>
  <ComboBox.ItemTemplate>
    <DataTemplate>
      <StackPanel Orientation="Horizontal">
        <TextBlock Text="{Binding Index}" />
        <TextBlock Text=" : " />
        <TextBlock Text="{Binding Name}" />
      </StackPanel>
    </DataTemplate>
  </ComboBox.ItemTemplate>
</ComboBox>