2010-01-21 39 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

相关问题