属性添加到对象
本文关键字:对象 添加 属性 | 更新日期: 2023-09-27 18:18:10
我使用了这个"指南",但不同之处在于,我不想将我附加属性的对象限制在UIElement
上我想附加一个属性到最通用的项目:对象,所以这里是我的代码:
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和谷歌),没有找到任何解决方案,但就我所理解的文章我链接,附加属性不限于ui元素对吗?所以…我该怎么办?
ps:完成我的答案,我必须得到一些对象的名称从DLL解析(并显示在一个树视图),所以,如果我没有一个名称字段/属性,我将添加附件!
你不能给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");
依赖属性不限于UIElement
s,但仅限于DependencyObject
s。如果您将代码中的object
更改为DependencyObject
,它应该可以工作。
我不知道你到底想做什么,所以我不知道这样做是否是一个可行的解决方案。