我可以为Shape或其他对象提供自定义属性,例如“MyCustomID”吗?

时间:2012-02-20 18:23:54

标签: c# wpf

我可以为元素提供自定义属性/属性/字段,以便以简单的方式存储有关它们的信息吗?就像myobject.parentid一样(parentid是我在创建对象时设置的数字,然后在与此对象交互时通过myobject.parentid检索)。

或者以最简单的方式在myobject.Name或myobject.Tag中存储这样的信息?

1 个答案:

答案 0 :(得分:3)

最简单的方法是使用WPF中的Attached Property

附加属性允许您创建任意属性并将其与元素相关联。然后,您可以使用它来存储数据并参与绑定方案。

public class MyCustomIdSource
{
    public static readonly DependencyProperty MyCustomIdProperty = 
        DependencyProperty.RegisterAttached("MyCustomId", typeof(Int32), typeof(MyCustomIdSource));

    public static void SetMyCustomId(UIElement element, Int32 value)
    {
        element.SetValue(MyCustomIdProperty, value);
    }

    public static Int32 GetMyCustomId(UIElement element)
    {
        return (Int32)element.GetValue(MyCustomIdProperty);
    }
}

但是,您可能希望通过将自定义数据放入WPF元素本身来考虑您正在完成的工作。你真的想让元素对此负责吗?将该责任分成一个维护视图的逻辑和状态然后将视图绑定到它的类更有意义吗?这被称为Model-View-ViewModel模式,非常适合WPF开发。