2011-10-24 60 views
0

所以,我在它的数据组合框和它的作品,他们希望如何:更改数据的组合框在WPF

<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

如果您ItemsSource是一个复杂的类型:

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

然后使用ComboBoxDisplayMemberPath属性来控制什么得到显示。在这种情况下,您需要添加:

DisplayMemberPath="SampleName" 

ComboBox的定义。

相反,如果你想同时显示的索引和名称,那么你就需要定义一个ItemTemplate组合框:

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

我可以改变的DisplayMemberPath在飞行中有一个与它,以及相关的指标? –

+0

@JW - 你想显示索引吗?你的问题并不清楚。 – ChrisF