gpt4 book ai didi

c# - 如何在自定义 WPF 控件中初始化集合属性

转载 作者:行者123 更新时间:2023-11-30 22:27:35 24 4
gpt4 key购买 nike

我有一个自定义的 WPF 控件基类。该基类注册了一个类型为“List<"some own type">”的自定义属性。

如何为设计时初始化属性?列表中应该始终有 8 个对象,用户应该能够修改这些对象。

我已尝试使用 PropertyMetadata 对象传递默认值,但属性编辑器中显示的集合始终为空。

public class CustomPropertyTestBase : UserControl
{

static CustomPropertyTestBase()
{
List<object> defaultValue = new List<object>(new object[8]);
MyCustomObjectsProperty = DependencyProperty.Register("MyCustomObjects",
typeof(List<object>), typeof(CustomPropertyTestBase),
new PropertyMetadata(defaultValue));
}

public static DependencyProperty MyCustomObjectsProperty;

[Category("MyCustomProperties")]
public List<object> MyCustomObjects
{
get;
set;
}
}

编辑:

每当我在属性编辑器中添加一个新对象时,这些新对象都不会被存储。重新打开属性编辑器后,列表再次为空。

我已将调试器附加到设计器,并且属性的 get 或 set 方法从未被编辑器调用。

解决方案:

正如“dowhilefor”所提到的。我不得不更改类型 ObservableCollection。现在设计器正确地存储了更改后的列表。谢谢。

最佳答案

当您需要在设计时显示示例数据时,不应在 C# 代码中对示例数据进行硬编码。

而是使用属性 d:DesignData 和支持示例数据 *.xaml 文件在设计器中显示示例数据。文章Design-time Attributes展示了如何做到这一点。

这里还有一篇关于 DesignData 的好文章:DesignData MVVM support in Blend, VS2010 and ... .

请注意,DesignData 不仅适用于 Blend,还适用于 Visual Studio。

关于c# - 如何在自定义 WPF 控件中初始化集合属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11224238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com