Как выровнять текст в DataTemplate, выбранный DataTemplateSelector? - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь выровнять текст в DataTemplate объекта ListBox в зависимости от выбора DataTemplateSelector.

То, что я хочу, выглядит примерно так: 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:

<ListBox ItemTemplateSelector="{StaticResource MessageDataTemplateSelector}"  ItemsSource="{Binding Messages}" />

Применяются цвета выравнивания нет.

Я также пробовал HorizontalAlignment,тоже не работает.Как добиться эффекта?

1 Ответ

0 голосов
/ 29 января 2019

Одним из решений является изменение стиля ListBoxItem таким образом, чтобы его HorizontalContentAlignment было Stretch:

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