1

ここに示すように、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このようにコンパイルして正常に実行されるようになりましたが、クラスに追加の依存関係プロパティを追加するとすぐに、次のようなエラーが発生し始めます。

テキスト 'パディング' から '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 依存プロパティをスタイル内から使えるようにしたい!

このエラーについて多くの検索を行いましたが、この問題に関連するものはないようです。

4

1 に答える 1

4

new PropertyMetadata(0)この問題は、依存関係プロパティをに変更するのを忘れたためnew PropertyMetadata(null)です。ありがとうケント。

于 2013-02-24T19:25:21.307 に答える