WPF DependencyProperty用法

时间:2014-02-26 23:46:37

标签: c# wpf xaml properties

我很难让Dependency Properties工作而不会导致编译错误。

我有一个名为TitleBar的usercontrol,它包含这个DependencyProperty:

public static readonly DependencyProperty TitleProperty = DependencyProperty.Register("Title", typeof(string), typeof(TitleBar), new PropertyMetadata(false));

    public string Title
    {
        get
        {
            return (string)GetValue(TitleProperty);
        }
        set
        {
            SetValue(TitleProperty, value);
        }
    }

在我看来,在xaml:

<Components:TitleBar x:Name="customTitleBar" Grid.Column="0" Grid.Row="0" Grid.ColumnSpan="3"/>

导致设计器/编译错误:

Cannot create an instance of "TitleBar". ... The invocation of the constructor on type 'TitleBar' that matches the specified binding constraints threw an exception. System.Exception {System.Windows.Markup.XamlParseException}

用户控件在没有DP的情况下完美运行。我做错了什么?

奇怪的是,当我实际将Title =“...”属性放入xaml时,它在设计器中起作用,直到我尝试编译它。从那时起,它给了我提到的错误。

2 个答案:

答案 0 :(得分:2)

当属性类型为bool时,您已将默认值指定为string

更改

new PropertyMetadata(false)

new PropertyMetadata(null)

答案 1 :(得分:2)

您的DependencyPropertystring但在PropertyMetadata中您将默认值指定为false