参考:
方法1:
DataTemplate 包含一个 StackPanel;
StackPanel 包含多个 TextBlock;
一个属性绑定到一个 TextBlock。
(我比较喜欢的)
XAML代码
<ItemsControl ItemsSource="{Binding Path=.}"> <ItemsControl.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horizontal"> <TextBlock FontWeight="Bold" Text="{Binding LastName}" /> <TextBlock Text=", " /> <TextBlock Text="{Binding FirstName}" /> <TextBlock Text=" " /> <TextBlock Text="{Binding MiddleInitial}" /> </StackPanel> </DataTemplate> </ItemsControl.ItemTemplate> </ItemsControl>
方法2:
DataTemplate 包含一个 TextBlock;
TextBlock 的 Text 属性用 MultiBinding;
MultiBinding 绑定多个 属性,用 StringFormat 指定这些属性显示(拼接)的格式。
(这种方法对多样化的显示格式比较无力。如 Text 中部分要粗体,部分要常规)
XAML代码
<ComboBox> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock> <TextBlock.Text> <MultiBinding StringFormat="{}{0}: {1}"> <Binding Path="idregion"/> <Binding Path="description"/> </MultiBinding> </TextBlock.Text> </TextBlock> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox>
方法3:
DataTemplate 包含一个 TextBlock;
TextBlock 包含多个 Run;
一个属性绑定到一个 Run。
XAML代码
<ComboBox Name="cboRegion"> <ComboBox.ItemTemplate> <DataTemplate> <TextBlock> <Run Text="{Binding idregion}" /> <Run Text="{Binding description}" /> </TextBlock> </DataTemplate> </ComboBox.ItemTemplate> </ComboBox>
其它:
- 有利用 Converter,处理多个绑定的属性,再显示这些属性“计算”后的值。
个人感觉太麻烦。当然也看使用场景。
- 有专为显示目标值,而特设一个属性的。
这种方法可能在 MVVM 之类的设计模式中用得比较多。