无法通过样式设置DependencyProperty值



专家

我已经编写了一个名为"尺寸线"的自定义形状,我正在UI的各个地方使用它。该形状由一条两端各有一个箭头的线组成。它工作得很好,但其中一个依赖属性不能通过样式设置,我就是不知道我做错了什么。

这是代码中无法按预期工作的部分:

public class DimensionLine : Shape
{
    public static readonly DependencyProperty ArrowsSizeProperty =
        DependencyProperty.Register("ArrowsSize", typeof(Size), typeof(DimensionLine),
            new FrameworkPropertyMetadata(new Size(10, 10),
                FrameworkPropertyMetadataOptions.AffectsArrange | FrameworkPropertyMetadataOptions.AffectsMeasure, 
                debug)); <-- I added this to listen for changes to the property ...
    private static void debug(DependencyObject dObj, DependencyPropertyChangedEventArgs e)
    {
       // ERROR! this code never receives value from the Style. Why?
    }
    public Size ArrowsSize
    {
        get { return (Size) GetValue(ArrowsSizeProperty); }
        set { SetValue(ArrowsSizeProperty, value); }
    }
}

XAML:

<MyXaml.Resources>
    <Style x:Key="SmallDimensionLine" TargetType="{x:Type cc:DimensionLine}" BasedOn="{StaticResource DimensionLine}">
        <Setter Property="ArrowsSize" Value="4,1.5" />
    </Style>   
</MyXaml.Resources>

只是为了确保我为依赖属性元数据添加了一个回调侦听器,并通过断点进行调试,但通过样式指定的值根本没有写入其中

对于d-属性,是否还需要做一些其他的事情来使其更符合样式?

感谢

创建新的WPF自定义控件时,您缺少通常自动添加的静态构造函数

static DimensionLine ()
{
    DefaultStyleKeyProperty.OverrideMetadata(typeof(DimensionLine ),
        new FrameworkPropertyMetadata(typeof(DimensionLine )));
}

相关内容

  • 没有找到相关文章

最新更新