我有一个几乎默认的 WPF 组合框:
对齐项目的最简单方法是什么,例如,在组合框的输入和/或下拉列表中向右对齐?
我环顾四周,发现只有与控制模板混淆的解决方案,在我看来,这对于这样一个简单的事情来说太远了。我不敢相信没有更简单的解决方案可以对齐项目。
更新:由于 dkozl 的回答,我稍微重新制定了这个问题,以涵盖更多读者可能会在这个主题上遇到的更广泛的案例。
此外,它应该防止某些人试图将这个问题作为重复来关闭。
我有一个几乎默认的 WPF 组合框:
对齐项目的最简单方法是什么,例如,在组合框的输入和/或下拉列表中向右对齐?
我环顾四周,发现只有与控制模板混淆的解决方案,在我看来,这对于这样一个简单的事情来说太远了。我不敢相信没有更简单的解决方案可以对齐项目。
更新:由于 dkozl 的回答,我稍微重新制定了这个问题,以涵盖更多读者可能会在这个主题上遇到的更广泛的案例。
此外,它应该防止某些人试图将这个问题作为重复来关闭。
如果您想右对齐所选值和下拉项目,那么设置HorizontalContentAlignment="Right"
反对ComboBox
就足够了
<ComboBox ... HorizontalContentAlignment="Right">
如果您只想右对齐下拉项目HorizontalContentAlignment
,那么您需要更改ComboBoxItem
<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 的回答中尝试了这两种方法,并且出于某种原因,HorizontalContentAlignment
针对我ComboBox
的设置足以与组合框的输入和下拉菜单中的正确项目对齐。
我遇到了在右侧对齐所选项目的问题,以便用户始终可以看到字符串的结尾。我发现的最简单的解决方案如下
<ComboBox ...>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock HorizontalAlignment="Right" Text="{Binding textProp}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>