WPF ComboBox:对齐所选值 and/or 下拉项

WPF ComboBox: Align selected value and/or drop down items

我有一个几乎默认的 WPF ComboBox:

最简单的对齐项目的方法是什么,例如,在组合框的输入 and/or 下拉列表中向右对齐

我环顾四周,只发现了与控件模板混淆的解决方案,在我看来,对于这样一个简单的事情来说,这太遥远了。我无法相信我们可以做的对齐项目的更简单的解决方案。

更新: 由于 dkozl 的回答,我已经稍微重新表述了这个问题,以涵盖更广泛的案例,进一步的读者可能会体验到这个主题。

此外,它应该可以防止某些人试图将此问题作为重复问题关闭。

如果您想右对齐所选值和下拉项,那么针对ComboBox设置HorizontalContentAlignment="Right"就足够了

<ComboBox ... HorizontalContentAlignment="Right">

如果你想右对齐只下拉项目那么你需要改变ComboBoxItem

HorizontalContentAlignment
<ComboBox>
    <ComboBox.ItemContainerStyle>
        <Style TargetType="{x:Type ComboBoxItem}">
            <Setter Property="HorizontalContentAlignment" Value="Right"/>
        </Style>
    </ComboBox.ItemContainerStyle>
</ComboBox>

并右对齐仅选择的值两者的组合

<ComboBox ... HorizontalContentAlignment="Right">
    <ComboBox.ItemContainerStyle>
        <Style TargetType="{x:Type ComboBoxItem}">
            <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
        </Style>
    </ComboBox.ItemContainerStyle>
</ComboBox>

我已经尝试了 dkozl 的回答中的两种方法,由于某种原因,针对我的 ComboBox 设置 HorizontalContentAlignment 足以与组合框输入和下拉列表中的正确项目对齐。

我遇到了将所选项目右对齐的问题,以便用户始终可以看到字符串的结尾。 我找到的最简单的解决方案如下

<ComboBox ...>
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock HorizontalAlignment="Right" Text="{Binding textProp}" />
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>