嗨,最近我制作了一本资源词典。我将按钮拉伸到网格的高度,并在按钮的内容展示器部分的文本块中的资源字典中,我将水平和垂直内容对齐方式更改为如下所示的中心;
<Style x:Key="RButtonStyle" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<TextBlock x:Name="b"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<ContentPresenter
HorizontalAlignment="Center"
VerticalAlignment="Center" />
...
是的,它有效。但并不完美。请参阅上面的链接,看看我在说什么。我在哪里可以得到一些关于它的详细信息,或者你可以帮我解决这个问题吗?
除了这个之外,我没有对textblock的内容部分进行任何更改。如果您需要我的资源字典的完整代码,我可以为您发布。
答案 0 :(得分:0)
因为您直接使用TextBlock
,所以只需将TextAlignment属性设置为“中心”即可获得居中文本HorizontalContentAlignment
属性{{1} }}
因此;
TextBlock
但是,除非我弄错了,否则您的控件模板需要一个父面板,因为如果<TextBlock x:Name="b"
HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center"/>
的{{1}}被填充,它应该会出错,因为对象树中有多个子节点。因此,您还需要添加一些内容来容纳孩子,例如简单的Content
或Button
等。
像;
Grid
如果您想使用StackPanel
的{{1}}属性,则需要将其包含在模板中。
例如;
<ControlTemplate TargetType="Button">
<Grid>
<TextBlock x:Name="b"
HorizontalAlignment="Center"
VerticalAlignment="Center"
TextAlignment="Center"/>
<ContentPresenter
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</Grid>
</ControlTemplate>
希望这有帮助,欢呼!