如何在DataTemplateSelector选择的DataTemplate中对齐文本?

时间:2019-01-28 21:55:50

标签: c# wpf datatemplate datatemplateselector

我试图根据DataTemplateSelector的选择来对齐ListBox的DataTemplate中的文本。

我想要的是这样的: enter image description here

并尝试使用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}" />

所应用的颜色未对齐。

我也尝试了Horizo​​ntalAlignment,也无法正常工作。如何达到效果?

1 个答案:

答案 0 :(得分:1)

一种解决方案是更改ListBoxItem样式,使其HorizontalContentAlignmentStretch

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
    </Style>
</ListBox.ItemContainerStyle>