2014-02-13 269 views
0

我試圖定義一個依賴項屬性是這樣的:WPF依賴屬性錯誤

public static readonly DependencyProperty DependencyPropertyName= DependencyProperty.Register("DepName", typeof(EnumName), typeof(MyWindow1), new FrameworkPropertyMetadata("FrameWorkProperty", FrameworkPropertyMetadataOptions.AffectsRender, Target)); 

private static void Target(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) 
{ 
    //some logic here 
} 

public EnumName DepName 
{ 
    get { return (EnumName)GetValue(DependencyPropertyName); } 
    set { SetValue(DependencyPropertyName, value); } 
} 

,我得到這個錯誤,並且不明白爲什麼:

{"Default value type does not match type of property 'DepName'."} 
+0

這可能會幫助:http://stackoverflow.com/questions/20398751/the-default-value-type-does-not-match-the-type-of-the-property –

回答

1

默認值類型(String)您的Dependency Property的屬性與您的屬性DepName的類型不匹配(EnumName)。

更改您的依賴屬性中的默認類型,它應該工作。

public static readonly DependencyProperty DependencyPropertyName= DependencyProperty.Register(
    "DepName", 
    typeof(EnumName), 
    typeof(MyWindow1), 
    new FrameworkPropertyMetadata(
     EnumName.SomeValue, // this is the defalt value 
     FrameworkPropertyMetadataOptions.AffectsRender, 
     Target)); 
+0

謝謝大家幫忙,我不知道我是如何錯過的:( – Rock3rRullz

+0

有時候你很容易盲目地使用自己的代碼,你需要的只是遠離你的代碼,用新鮮的眼睛回來。詭計;) – Eirik

+0

請注意,依賴項屬性標識符字段也有命名約定。你應該被稱爲'DepNameProperty'而不是'DependencyPropertyName'。請參閱MSDN上的[定義依賴項屬性的清單]中的*依賴項屬性名稱約定*部分(http://msdn.microsoft.com/en-us/library/ms753358.aspx#checklist)。 – Clemens