2011-10-04 77 views
3

我需要創建一個DisplayMemberPath是幾個屬性的複合(即object.category.Name +「 - >」+ object.description)我很確定我可以通過創建一個動態數據類型封裝對象,並且還添加了一個名爲displayField的新屬性,這是我所需要的,但我想知道是否有更合適的方法來執行此操作,而不涉及創建新對象。有任何想法嗎?複合DisplayMemberPath爲組合框

回答

8

DisplayMemberPath只是一個「捷徑」,當你不需要一個複雜的項目模板。如果需要更多控制,請使用ItemTemplate代替:

<ComboBox ItemsSource="{Binding Items}"> 
    <ComboBox.ItemTemplate> 
     <DataTemplate> 
      <TextBlock> 
       <TextBlock.Text> 
        <MultiBinding StringFormat="{}{0} -> {1}"> 
         <Binding Path="Category.Name" /> 
         <Binding Path="Description" /> 
        </MultiBinding> 
       </TextBlock.Text> 
      </TextBlock> 
     </DataTemplate> 
    </ComboBox.ItemTemplate> 
</ComboBox> 
+0

謝謝!如何特別綁定到displaymemberpath。例如,如果我想要兩個項目模板,一個用於selectedvaluepath,另一個用於dislaymemberpath? – dregan

+0

@ user978744,您可以指定ItemTemplate而不是DisplayMemberPath,但不能對SelectedValuePath執行相同的操作,因爲選定的值不是顯示的內容,所以它沒有任何意義。如果您需要複合值SelectedValue,請在您的ViewModel上創建一個新屬性 –