我正在尝试创建一个具有 4 种状态(上、下、左、右)的自定义控件,并且这些状态中的每一个都需要更新 DockPanel.Dock 附加属性,该属性附加到控件模板中的 Image 控件。
我的控制模板的一部分如下:
<ControlTemplate TargetType="{x:Type library:IndicatorButton}">
<DockPanel LastChildFill="True">
<Image x:Name="Icon"
DockPanel.Dock="{TemplateBinding State}" Height="66" Width="87"
HorizontalAlignment="Center" VerticalAlignment="Center"
Stretch="UniformToFill" Source="{DynamicResource HandIcon}"/>
<Border Background="{x:Null}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
SnapsToDevicePixels="True" >
<Rectangle Fill="Transparent"/>
</Border>
并且“状态”属性被定义为像这样的依赖属性
public static readonly DependencyProperty StateProperty =
DependencyProperty.Register("State", typeof(HandIndicatorStates),
typeof(IndicatorButton),
new FrameworkPropertyMetadata(HandIndicatorStates.None,
OnIndicatorStateChanged){
BindsTwoWayByDefault = true,
});
HandIndicatorStates 是一个枚举,定义如下
public enum HandIndicatorStates
{
Left = 0,
Right = 1,
Top = 2,
Bottom = 3,
None = 4
}
最后我像这样在xaml中定义控件
<library:IndicatorButton State="Top" BorderBrush="Yellow" BorderThickness="5"/>
当我更改控件定义中的“状态”属性时,什么也没有发生。但是当我删除控件模板中的模板绑定并将其替换为“顶部”、“底部”等时,我得到了所需的结果。
我确定这是我在自定义控制代码中没有做的事情。我省略了一些东西来尝试保持简短和甜蜜,但是如果您需要其他任何内容,请询问
感谢您的任何帮助