自定义按钮样式对齐wpf

Custom button style alignment wpf

我尝试修改按钮样式以删除 Chrome 类系统按钮。那里一切正常,但按钮的内容不会在按钮的中心正确对齐。

按钮样式:

<Style x:Key="NoChrome" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <ContentPresenter/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

按钮声明:

<Button Content="Button" Canvas.Left="141" Canvas.Top="324" Width="75" Style="{DynamicResource NoChrome}"/>

ContentPresenter HorizontalAlignment="Center"

您通常使用 ContentControl 的 ControlTemplate 中的 ContentPresenter 来指定要添加内容的位置。每个 ContentControl 类型在其默认 ControlTemplate 中都有一个 ContentPresenter。

当 ContentPresenter 对象位于 ContentControl 的 ControlTemplate 中时,Content、ContentTemplate 和 ContentTemplateSelector 属性从 ContentControl 的同名属性中获取它们的值。您可以让 ContentPresenter 属性 通过设置 ContentSource 属性 或绑定到它们来从模板化父级的其他属性获取这些属性的值。

<Style x:Key="NoChrome" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button">
                    <ContentPresenter HorizontalAlignment="Center"/>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Reference