将依赖项属性添加到自定义控件会导致样式出现奇怪的错误

本文关键字:样式 错误 属性 依赖 添加 自定义控件 | 更新日期: 2023-09-27 18:00:57

我正在尝试创建一个从ListBoxItem扩展的自定义控件,如下所示:

public class MainNavListBoxItem : ListBoxItem
{
    public MainNavListBoxItem()
    {
        this.DefaultStyleKey = typeof(MainNavListBoxItem);
    }
}

我有一个风格,它在ResourceDictionary中定义如下:

<Style TargetType="assets:MainNavListBoxItem">
        <Setter Property="Padding" Value="3"/>
        <Setter Property="HorizontalContentAlignment" Value="Left"/>
        <Setter Property="VerticalContentAlignment" Value="Top"/>
        <Setter Property="Background" Value="Transparent"/>
        <Setter Property="BorderThickness" Value="1"/>
        <Setter Property="TabNavigation" Value="Local"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="assets:MainNavListBoxItem">
                    <Grid Height="50">
                        <VisualStateManager.VisualStateGroups>
...

现在它像这样编译和运行得很好,但一旦我向MainNavListBoxItem类添加了一个额外的依赖属性,我就会开始出现这样的错误:

无法从文本"Padding"创建"System.Windows.DependencyProperty"。

如果我在样式中重新排列Setter标签,它将始终报告最上面的一个。

我的依赖属性代码供参考:

public ImageSource ImageDark
{
    get { return (ImageSource)GetValue(ImageDarkProperty); }
    set { SetValue(ImageDarkProperty, value); }
}
public static readonly DependencyProperty ImageDarkProperty =
    DependencyProperty.Register("ImageDark", typeof(ImageSource), typeof(MainNavListBoxItem), new PropertyMetadata(0));

这是怎么回事?!我希望能够在样式中使用此ImageDark依赖属性!

我对这个错误做了很多搜索,但似乎没有什么与这个问题相关。

将依赖项属性添加到自定义控件会导致样式出现奇怪的错误

这个问题是因为我忘记将依赖属性中的new PropertyMetadata(0)更改为new PropertyMetadata(null)。谢谢Kent。