2013-11-21 56 views
0

首先讓我說我一直在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上,但仍然有這種行爲。 我希望有人會看到我目前失明的東西。

在此先感謝。

+0

您是否嘗試重新構建(清理並構建)您的解決方案? – sthotakura

+0

如果您強制使用正確的語法並運行應用程序 - 是否會崩潰?你會在輸出窗口中看到異常嗎?如果否,則重新啓動VS.如果這沒有幫助 - 重新啓動機器。它有幫助嗎? – XAMeLi

+0

是的,重建,清理很多次。謝謝。如果我使用強制正確的語法來運行它,那麼會出現設計時錯誤,並且項目將無法編譯。 – Kenyon

回答

3

哦,自從何時附加屬性定義了這種方式我的朋友?

您沒有遵循命名約定。

SetNullAdornerStringProperty - 屬性部分應被移除。

同樣適用於GetNullAdornerStringProperty - 刪除屬性部分。

+0

oi,你是對的!我最近重建了我的代碼片段,這是問題的根源!謝謝!我知道這是我只是盲目的。我每次都會用代碼片斷將這些代碼敲出來。感謝您的新鮮眼睛! – Kenyon

+0

當然,隨時標記答案或投票贊成有用的文章 –

+1

好趕,+1! –