Wpf 是否有可应用于DependencyProperty的属性类列表?
我正在处理一个问题,它似乎可以通过对DependencyProperty应用属性来解决。我很好奇,我找不到列出所有应用于DependencyProperties的XXXAttribute类以及这些属性的用途的文档。有人知道这样的事吗?如果没有,可能会发布一些您使用过的属性以及您过去使用它们的目的?也许没有 据我所知,这些属性都不是用来修饰依赖属性的 当然,您可以修饰使用Dependency属性的类属性,甚至可以修饰保存DependencyProperty引用的静态字段:-Wpf 是否有可应用于DependencyProperty的属性类列表?,wpf,silverlight,xaml,dependency-properties,Wpf,Silverlight,Xaml,Dependency Properties,我正在处理一个问题,它似乎可以通过对DependencyProperty应用属性来解决。我很好奇,我找不到列出所有应用于DependencyProperties的XXXAttribute类以及这些属性的用途的文档。有人知道这样的事吗?如果没有,可能会发布一些您使用过的属性以及您过去使用它们的目的?也许没有 据我所知,这些属性都不是用来修饰依赖属性的 当然,您可以修饰使用Dependency属性的类属性,甚至可以修饰保存DependencyProperty引用的静态字段:- public clas
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注册的类型,那么与属性用法相比,上面的内容实际上是相当整洁的。如果您不这样做,那么就没有什么可以帮助您。据我所知,这些属性都不是用来修饰依赖项属性的 当然,您可以修饰使用Dependency属性的类属性,甚至可以修饰保存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注册的类型,那么与属性用法相比,上面的内容实际上是相当整洁的。如果您不这样做,则没有任何帮助。您能举一个您试图解决的问题的例子吗?我想在我的控件上有一个属性,该属性将接受某一组值。我只是使用了一个枚举,但我想可能有一个属性来指示有效值(在设计时,而不是在运行时)。然后我开始思考可能存在哪些属性,这就引发了这个问题。所以问题解决了,我只是好奇。你能举一个例子说明你想解决的问题吗?我想在我的控件上有一个属性,可以接受一组特定的值。我只是使用了一个枚举,但我想可能有一个属性来指示有效值(在设计时,而不是在运行时)。然后我开始思考可能存在哪些属性,这就引发了这个问题。问题解决了,我只是好奇。谢谢。这是有道理的。我以为我以前遇到过属性依赖属性,但这可能是我凭空想象出来的。谢谢。这是有道理的。我以为我以前遇到过属性依赖属性,但这可能是我凭空想象出来的。