2010-01-21 19 views
1

我正在處理一個似乎可能通過將屬性應用於DependencyProperty來解決的問題。我很好奇,並且找不到列出所有適用於DependencyProperties的XXXAttribute類以及用於哪些屬性的文檔。有人知道這樣的事嗎?如果沒有,可能會發布一些您曾經使用過的屬性以及過去用過的屬性?也許有沒有?是否有可以應用於DependencyProperty的Attribute類的列表?

+0

你可以舉一個你想解決的問題嗎? – AnthonyWJones 2010-01-21 18:14:09

+0

我想要在我的控件上擁有一個屬性,以接受一組特定的值。我只是使用了一個枚舉,但我想嘿可能有一個屬性來指示有效值(在設計時,而不是運行時)。然後我開始想知道可能存在哪些屬性,這引發了這個問題。所以問題解決了,我只是好奇。 – Skrymsli 2010-01-21 23:33:32

回答

1

這是沒有屬性,我知道其中的設計來裝飾依賴屬性。

當然,你可以佩戴正在使用依賴屬性或偶數靜電場,其中參考的DependencyProperty舉行的階級屬性問題: -

public class MyClass : DependencyObject 
{ 
    [PossibleLocationForPropertyAttribute()] 
    public string Description 
    { 
     get { return (string)GetValue(DescriptionProperty); } 
     set { SetValue(DescriptionProperty, value); } 
    } 

    [PossibleLocationForFieldAttribute()] 
    public static readonly DependencyProperty DescriptionProperty = 
     DependencyProperty.Register("Description", typeof(string), typeof(MyClass), null); 
} 

然而這些都不當你幫助你有一個對依賴項屬性的引用。不幸的是,您無法將附加數據附加到可以在不知情的情況下檢索到的依賴項屬性。

我從來沒有真正嘗試過這一點,但...

public MyExtendedPropertyMetaData : PropertyMetaData 
{ 
    public object Token {get; private set;} 

    public MyExtendedPropertyMetaData(object token) : PropertyMetaData(null) 
    { 
     Token = token; 
    } 

} 

public static readonly DependencyProperty DescriptionProperty = 
     DependencyProperty.Register("Description", typeof(string), typeof(MyClass), 
      new MyExtendedMetaData("Some token could be anything")); 

現在只需給予DP ,你知道它的註冊MyClass則: -

var meta = dp.GetMetaData(typeof(MyClass)) as MyExtendedPropertyMetadata; 
string tokenData = (string)meta.Token; 

如果知道與屬性使用相比,DP註冊在上面的類型實際上非常整潔。如果你沒有,那麼沒有什麼會幫助你。

+0

謝謝。這說得通。我以爲我曾經遇到屬性依賴屬性,但它可能是我的想象力。 – Skrymsli 2010-01-21 23:27:22

相關問題