如何对齐 DataTemplateSelector 选择的 DataTemplate 中的文本?
How to align Text in DataTemplate choosen by a DataTemplateSelector?
我正在尝试根据 DataTemplateSelector 的选择对齐 ListBox 的 DataTemplate 中的文本。
我想要的是这样的:
并尝试使用 DataTemplateSelector
<DataTemplate x:Key="RequestTemplate" DataType="local:Message">
<TextBlock Text="{Binding Text}" Background="LightGreen" TextAlignment="Left" TextWrapping="Wrap"/>
</DataTemplate>
<DataTemplate x:Key="ResponseTemplate" DataType="local:Message" >
<TextBlock Text="{Binding Text}" Background="Yellow" TextAlignment="Right" TextWrapping="Wrap"/>
</DataTemplate>
<local:MesssageDataTemplateSelector x:Key="MessageDataTemplateSelector"
ResponseTemplate="{StaticResource ResponseTemplate}"
RequestTemplate="{StaticResource RequestTemplate}" />
列表框本身:
<ListBox ItemTemplateSelector="{StaticResource MessageDataTemplateSelector}" ItemsSource="{Binding Messages}" />
已应用颜色,但未应用对齐。
我也试过 HorizontalAlignment,也没用。如何实现效果?
一种解决方案是更改 ListBoxItem
样式,使其 HorizontalContentAlignment
为 Stretch
:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>
我正在尝试根据 DataTemplateSelector 的选择对齐 ListBox 的 DataTemplate 中的文本。
我想要的是这样的:
并尝试使用 DataTemplateSelector
<DataTemplate x:Key="RequestTemplate" DataType="local:Message">
<TextBlock Text="{Binding Text}" Background="LightGreen" TextAlignment="Left" TextWrapping="Wrap"/>
</DataTemplate>
<DataTemplate x:Key="ResponseTemplate" DataType="local:Message" >
<TextBlock Text="{Binding Text}" Background="Yellow" TextAlignment="Right" TextWrapping="Wrap"/>
</DataTemplate>
<local:MesssageDataTemplateSelector x:Key="MessageDataTemplateSelector"
ResponseTemplate="{StaticResource ResponseTemplate}"
RequestTemplate="{StaticResource RequestTemplate}" />
列表框本身:
<ListBox ItemTemplateSelector="{StaticResource MessageDataTemplateSelector}" ItemsSource="{Binding Messages}" />
已应用颜色,但未应用对齐。
我也试过 HorizontalAlignment,也没用。如何实现效果?
一种解决方案是更改 ListBoxItem
样式,使其 HorizontalContentAlignment
为 Stretch
:
<ListBox.ItemContainerStyle>
<Style TargetType="ListBoxItem">
<Setter Property="HorizontalContentAlignment" Value="Stretch" />
</Style>
</ListBox.ItemContainerStyle>