AttachedProperty к объекту? - PullRequest
       29

AttachedProperty к объекту?

1 голос
/ 19 декабря 2011

Я использовал это "руководство" , но разница в том, что я не хочу ограничивать объект, к которому я прикрепляю свойство, 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 и Google) и не нашел ни одногорешение, но, насколько я понял, статью, которую я связал, прикрепленные свойства не ограничены правом UIElements?Итак ... что мне делать?

ps: чтобы завершить свой ответ, я ДОЛЖЕН получить имя для некоторых объектов, которые я анализирую из DLL (и отображаю его в TreeView), так что если я неИмя поля / свойство, я добавлю вложение!

Ответы [ 2 ]

2 голосов
/ 19 декабря 2011

Вы не можете прикрепить свойства к объекту (или вы сможете расширить весь каркас ..). Свойства зависимостей могут использоваться только объектами, унаследованными от 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");
0 голосов
/ 19 декабря 2011

Свойства зависимостей не ограничены UIElement с, но они ограничены DependencyObject с .Если вы измените object в своем коде на DependencyObject, это должно сработать.

Я понятия не имею, что вы на самом деле пытаетесь сделать, поэтому я не знаю, возможно ли это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...