Показывать пользовательский DisplayMember в WPF ComboBox - PullRequest
0 голосов
/ 03 ноября 2010

это мой ComboBox:

WeeklyStartDate и WeekNumber Я хочу отобразить в свойстве DisplayMember. Но WPF говорит, что я не могу использовать DisplayMember, поскольку я уже использую ItemTemplate ...

Как я могу отобразить с помощью приведенного ниже кода пользовательский DisplayMember, когда я щелкну по элементу в ComboBox?

В настоящее время используется метод 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 Ответ

1 голос
/ 03 ноября 2010

Быстрый и грязный метод: переопределите ToString в своей WeeklyDateViewModel, чтобы вернуть строку, которую вы хотите отобразить

...