WPF -- 绑定显示多个属性

参考

方法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 之类的设计模式中用得比较多。

你可能感兴趣的:(WPF,binding)