2011-10-04 85 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上创建一个新属性 –