您好我在我的wpf应用程序中使用Reuxables Free Theme Inc。
我以这种方式将主题添加到App.xaml中:
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/ReuxablesLegacy;component/inc.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
在我的Main.xaml中,我默认使用了一个组合框,其内容与左边对齐:
我想将组合框的内容对齐。
当我尝试HorizontalContentAlignment="Right"
时没有任何改变。
我尝试了TextBlock.TextAlignment="Right"
,结果就是这样:
此时组合框与右边对齐,但是在此图片中为“1”的所选项目仍然与左边对齐。
无论我尝试了什么,我无法将所选项目对齐到右侧。我做错了什么?
答案 0 :(得分:1)
如果你查看MSDN上的ComboBox Styles and Templates页面,你会发现WPF中使用的ControlTemplate
的默认ComboBox
。它太大而无法在此处显示,但如果您向下看页面,则会看到名为TextBox
的{{1}}控件,如下所示:
PART_EditableTextBox
这是用于所选值的控件,如您所见,其 <TextBox x:Name="PART_EditableTextBox"
Style="{x:Null}"
Template="{StaticResource ComboBoxTextBox}"
HorizontalAlignment="Left"
VerticalAlignment="Bottom"
Margin="3,3,23,3"
Focusable="True"
Background="Transparent"
Visibility="Hidden"
IsReadOnly="{TemplateBinding IsReadOnly}" />
属性已硬编码为HorizontalAlignment
,因此此"Left"
中的文字将始终与左侧对齐
因此,要将文字与右侧对齐,您需要为TextBox
定义自己的ControlTemplate
。您可以在MSDN上的Control Authoring Overview页面中找到如何执行此操作的方法。基本上,您只需要复制默认ComboBox
并将上面的ControlTemplate
替换为下面的TextBox
:
TextBox
完成此操作后,将新的 <TextBox x:Name="PART_EditableTextBox"
Style="{x:Null}"
Template="{StaticResource ComboBoxTextBox}"
HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="Bottom"
Margin="3,3,23,3"
Focusable="True"
Background="Transparent"
Visibility="Hidden"
IsReadOnly="{TemplateBinding IsReadOnly}" />
应用到ControlTemplate
的{{1}}属性,并将Template
属性设置为ComboBox
,然后应该最终看到你选择的值文本右对齐。