在WPF ComboBox中显示自定义DisplayMember

时间:2010-11-02 22:05:55

标签: wpf combobox selecteditem

这是我的ComboBox:

WeeklyStartDate和WeekNumber我想在DisplayMember属性中显示。但是WPF说我不能使用DisplayMember,因为我已经使用了ItemTemplate ......

当我点击ComboBox中的某个项目时,如何使用以下代码显示自定义DisplayMember?

目前正在使用ToString()方法呈现DisplayMember,显示XXX.ViewModel.WeeklyDateViewModel,这是命名空间+类型。

<ComboBox    
    Style="{StaticResource ComboBoxStyle1}"
    AlternationCount="2"
    FontSize="16"
    VerticalContentAlignment="Center"
    Width="150" 
    IsEditable="True"
    SelectedItem="{Binding SelectedWeeklyDateViewModel,Mode=TwoWay}"
    ItemContainerStyle="{StaticResource alternateColor}"         
    ItemsSource="{Binding WeeklyDatesList}">
        <ComboBox.ItemsPanel>
            <ItemsPanelTemplate>
                <VirtualizingStackPanel VirtualizingStackPanel.VirtualizationMode="Recycling" />
            </ItemsPanelTemplate>
        </ComboBox.ItemsPanel>                    
        <ComboBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Width="100" Foreground="blue" Text="{Binding WeekStartDate,Mode=TwoWay, StringFormat='yyyy-MM-dd'}" />
                    <TextBlock Text=" " />
                    <TextBlock Width="100" Foreground="Red" Text="{Binding WeekNumber}"  />
                </StackPanel>
            </DataTemplate>
        </ComboBox.ItemTemplate>
    </ComboBox>

1 个答案:

答案 0 :(得分:1)

快速而脏的方法:覆盖WeeklyDateViewModel上的ToString以返回要显示的字符串