我使用了this "guide",
但不同之处在于我不想将附加属性的对象限制为UIElement
我想将属性附加到最通用的项目:object,所以这是我的代码:
public static readonly DependencyProperty QbNameProperty = DependencyProperty.RegisterAttached(
"QbName",
typeof(string),
typeof(QbName),
new PropertyMetadata("")
);
public static void SetQbName(object obj, string name)
{
obj.SetValue(QbNameProperty, name);
}
public static Boolean GetQbName(object obj)
{
return (Boolean)obj.GetValue(QbNameProperty);
事情是对象不存在SetValue和GetValue ...我试图到处寻找(SO和谷歌)并没有找到任何解决方案但据我所知,我链接的文章,attachmentProperties不限于UIElements对 ? 那么......我该怎么办?
ps:完成我的回答我必须获取一些对象的名称我从DLL解析(并在TreeView中显示)所以,如果我没有名称字段/属性,我将添加依恋!
答案 0 :(得分:2)
您不能将属性附加到Object(或者您将能够扩展整个框架..)。 依赖属性只能由继承自DependencyObject的对象使用。
/// <summary>
/// QbName
/// </summary>
public class QbName : DependencyObject
{
/// <summary>
///
/// </summary>
public static readonly DependencyProperty NameProperty = DependencyProperty.RegisterAttached(
"Name",
typeof(string),
typeof(QbName),
new PropertyMetadata("")
);
/// <summary>
/// Sets the name.
/// </summary>
/// <param name="element">The element.</param>
/// <param name="value">The value.</param>
public static void SetName(DependencyObject element, string value)
{
element.SetValue(NameProperty, value);
}
/// <summary>
/// Gets the name.
/// </summary>
/// <param name="element">The element.</param>
/// <returns></returns>
public static string GetName(DependencyObject element)
{
return element.GetValue(NameProperty).ToString();
}
}
然后你可以使用静态方法:
QbName qb = new QbName();
QbName.SetName(qb, "test");
答案 1 :(得分:0)
依赖项属性不限于UIElement
,但它们仅限于DependencyObject
s。如果您将代码中的object
更改为DependencyObject
,则应该有效。
我不知道你究竟想做什么,所以我不知道这样做是否可行。