1. 程式人生 > >WPF -- 繫結顯示多個屬性

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 之類的設計模式中用得比較多。