【问题标题】:Template binding on ContentPresenter not workingContentPresenter 上的模板绑定不起作用
【发布时间】:2017-07-14 03:38:11
【问题描述】:

我正在编写一个自定义按钮:

<UserControl x:Class="WpfSinergoHMIControls.RoundedButton"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
         xmlns:local="clr-namespace:WpfSinergoHMIControls"
         mc:Ignorable="d">

<UserControl.Template>
    <ControlTemplate TargetType="UserControl">
        <Button Content="{TemplateBinding Content}" Foreground="{TemplateBinding Foreground}" Click="button_Click" PreviewMouseDown="Button_MouseDown" PreviewMouseUp="Button_MouseUp">
            <Button.Resources>

            </Button.Resources>
            <Button.Template>
                <ControlTemplate TargetType="Button">
                    <Border Width="{Binding Size}"
                            Height="{Binding Size}"
                            BorderBrush="#FF3C7FB1"
                            BorderThickness="1"
                            CornerRadius="5"
                            Name="RoundedButtonBorder">
                        <Border.Background>
                            <LinearGradientBrush EndPoint="0.5,1" StartPoint="0.5,0">
                                <GradientStop Color="#3a4451" Offset="0"/>
                                <GradientStop Color="#0b2039" Offset="1"/>
                            </LinearGradientBrush>
                        </Border.Background>
                        <ContentPresenter VerticalAlignment="{TemplateBinding VerticalAlignment}" HorizontalAlignment="{TemplateBinding HorizontalAlignment}"/>
                    </Border>
                </ControlTemplate>
            </Button.Template>
        </Button>
    </ControlTemplate>
</UserControl.Template>

我正在尝试将 ContentPresenter 的“Horizo​​ntalAlignement”和“VerticalAlignment”绑定到模板。那么,我想做的是使用这样的按钮:

<local:RoundedButton HorizontalAlignment="Center" VerticalAlignment="Center" Height="73" Margin="35,10,282,236" FontSize="30"  Width="200" Content="Hello" Foreground="Red"/>

并且让按钮内的文本在两个轴上居中。这不起作用,我无法弄清楚原因。我的代码中缺少什么?谢谢!

【问题讨论】:

    标签: wpf binding alignment contentpresenter


    【解决方案1】:

    我发现了问题所在。

    在标签“按钮”中我必须添加:

    VerticalAlignment="{TemplateBinding VerticalAlignment}" 
    HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
    

    否则,绑定似乎不会“传播”到内部元素。

    这就是问题所在!

    【讨论】:

    • 为什么你有所有的嵌套模板?
    猜你喜欢
    • 2011-05-30
    • 1970-01-01
    • 1970-01-01
    • 2013-12-21
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多