2010-11-02 33 views
0

這是我的組合框:在WPF組合框中顯示自定義的DisplayMember

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

快速和骯髒的方法:在你的WeeklyDateViewModel重寫的ToString返回要顯示

+0

確定,什麼是「大約需要5分鐘法」與最佳實踐的字符串:P?快速工作,但我想要它格式化爲與ItemTemplate相同的顏色。 – Elisabeth 2010-11-02 22:31:19

+0

覆蓋Combobox上的控制模板 – benPearce 2010-11-02 22:35:44

+0

我想知道爲什麼你沒有說覆蓋組合框:P好希望更詳細的答案:覆蓋這個? => ---------啊......現在我知道爲什麼整個過程都不​​起作用我做了IsEditable =「true」,我沒有覆蓋EditableControlTemplate,而是正常一...檢查=> http://img259.imageshack.us/img259/359/check.png :) – Elisabeth 2010-11-02 22:58:33