我正在尝试在 Sukram WPF 图表设计器示例(WPF 图表设计器 - 第 4 部分)中使用 propertyGrid,我是 wpf 的新手。如何在这个项目中添加正确的 PropertyGrid,我可以在设计器画布中显示每个项目的所有属性,也可以从设计器画布中多选项目以显示公共属性,并且我在设计器中为每个项目都有自定义属性。如果大家有经验或有类似的样品,请与我分享。谢谢你
问问题
436 次
1 回答
1
您可以在 WPF 应用程序中使用 windows PropertyGrid。您可以创建一个包含您想在 propertygrid 中显示的所有属性的类,例如:
[TypeConverter(typeof(AllItemsTypeConverter))]
public class AllItems
{
public string Name
{
get { // }
set { // }
}
public String description
{
get { // }
set { // }
}
}
AllItems 类有一个类型转换器,您可以为您想要的每个对象过滤您的项目,如下所示:
class AllItemsTypeConverter: ExpandableObjectConverter
{
public override PropertyDescriptorCollection GetProperties(
ITypeDescriptorContext context, object value, Attribute[] attributes)
{
var originalProperties = base.GetProperties(context, value, attributes);
var propertyDescriptorList = new List<PropertyDescriptor>(originalProperties.Count);
foreach (PropertyDescriptor propertyDescriptor in originalProperties)
{
bool showPropertyDescriptor = true;
switch (propertyDescriptor.Name)
{
// this properties belong to Input
case "InputPlayInstance": showPropertyDescriptor = designerNode.ShowInput; break;
case "InputNodeInputSetup": showPropertyDescriptor = designerNode.ShowInput; break;
case "InputGrammerList": showPropertyDescriptor = designerNode.ShowInput; break;
.
.
.
.
}
if (showPropertyDescriptor) propertyDescriptorList.Add(propertyDescriptor);
}
return new PropertyDescriptorCollection(propertyDescriptorList.ToArray());
}
}
该类覆盖“ExpandableObjectConverter”类的“GetProperties”方法,您可以指定该属性是否属于特定对象。
于 2013-02-17T08:56:01.867 回答