WPF -- 繫結顯示多個屬性
阿新 • • 發佈:2019-01-23
參考:
方法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 之類的設計模式中用得比較多。