我可以给Shape或其他对象一个自定义属性吗;MyCustomID”;

本文关键字:一个 自定义属性 MyCustomID Shape 其他 对象 我可以 | 更新日期: 2023-09-27 18:25:09

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

或者在myobject中存储类似的信息。名称或myobject。用最简单的方式标记?

我可以给Shape或其他对象一个自定义属性吗;MyCustomID”;

最简单的方法是在WPF中使用附加属性。

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

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元素本身来完成什么。你真的想让元素对此负责吗?将该责任分离为一个类,该类维护视图的逻辑和状态,然后将视图绑定到它,这会更有意义吗?这被称为模型视图视图模型模式,非常适合WPF开发。