首先讓我說我一直在WPF工作很長一段時間。我已經定義並使用了許多AttachedProperties,但是這一個讓我難住了。也許我只是俯視簡單的東西,我需要別人的眼睛看到它。AttachedProperty無法識別,無法添加綁定
我已經定義,就像任何其他AttachedProperty的AttachedProperty:
public static readonly DependencyProperty NullAdornerStringProperty =
DependencyProperty.RegisterAttached(
"NullAdornerString",
typeof(string),
typeof(NullTextAdorner),
new FrameworkPropertyMetadata(null, OnNullAdornerStringChanged));
public static void SetNullAdornerStringProperty(DependencyObject obj, string nullAdornerString)
{
obj.SetValue(NullAdornerStringProperty, nullAdornerString);
}
public static string GetNullAdornerStringProperty(DependencyObject obj)
{
return (string)obj.GetValue(NullAdornerStringProperty);
}
注:NullTextAdorner從DependencyOject並沒有從我的屬性更改事件處理程序的錯誤派生。但是,當我在XAML中使用該AP時,我只能將它引用爲「NullAdornerStringProperty」,因爲實際的屬性名稱被註冊爲「NullAdornerString」,這是不常見的。我以前製作的任何其他AP總是通過註冊名稱在XAML中引用,而不是該屬性的全名。
其實我可以分配一個靜態的字符串在這樣的XAML的財產,它在運行時工作得很好:
<igWPF:XamTextEditor OSAdorners:NullTextAdorner.NullAdornerStringProperty="The Value is Null!!" />
,但我不能用綁定表達式
<igWPF:XamTextEditor OSAdorners:NullTextAdorner.NullAdornerStringProperty="{Binding SomeProperty}" />
設置
這給了我一個運行時錯誤:
A 'Binding' cannot be set on the 'SetNullAdornerStringProperty' property of type 'XamTextEditor'. A 'Binding' can only be set on a DependencyProperty of a DependencyObject.
如果我強迫XAML是它應該是什麼,
<igWPF:XamTextEditor OSAdorners:NullTextAdorner.NullAdornerString="{Binding SomeProperty}"
VS告訴我,它無法找到屬性:
The attachable property 'NullAdornerString' was not found in type 'NullTextAdorner'.
不要緊,什麼類型的控制我設置的屬性上。我總是得到這種行爲。 這是在一個程序集中,該程序集具有可正常工作並可使用綁定的其他附加屬性。我甚至將這個AP移動到了其他工作的AP上,但仍然有這種行爲。 我希望有人會看到我目前失明的東西。
在此先感謝。
您是否嘗試重新構建(清理並構建)您的解決方案? – sthotakura
如果您強制使用正確的語法並運行應用程序 - 是否會崩潰?你會在輸出窗口中看到異常嗎?如果否,則重新啓動VS.如果這沒有幫助 - 重新啓動機器。它有幫助嗎? – XAMeLi
是的,重建,清理很多次。謝謝。如果我使用強制正確的語法來運行它,那麼會出現設計時錯誤,並且項目將無法編譯。 – Kenyon