0

我正在尝试XmlElement在 Xceed PropertyGrid 中显示 的属性。为此,我定义了自定义包装类。它包装 XmlElement,遍历 XmlAttributes 并为每个 XmlAttribute 创建自定义 PropertyDescriptor。所有“虚拟”属性的类型都是String. 一切正常。现在,我想为每个具有受限值集的属性提供可能的属性值的下拉列表。在 Xceed 的 PropertyGrid 中,就是ItemsSourceAttribute这样。但它必须按如下方式应用:

ItemsSourceAttribute(typeof(MyCustomItemsSource))

这就是问题所在 - 我无法为MyCustomItemsSource构造函数提供正确的参数。我能做些什么呢?

似乎还有另一种可能性 - 定义 TypeConverter,覆盖 GetStandardValues,并将此转换器提供给“虚拟”属性。但是 PropertyGrid 只是忽略了这个属性。

如何使用 Xceed PropertyGrid 完成这个简单的任务?

4

1 回答 1

0

解决了。我实现了自定义编辑器

public class AttributeValuesEditor: Xceed.Wpf.Toolkit.PropertyGrid.Editors.ComboBoxEditor
{
    protected override IEnumerable CreateItemsSource(PropertyItem propertyItem)
    {
        var property = propertyItem.PropertyDescriptor as XmlAttributePropertyDescriptor;
        Debug.Assert(property!=null);
        return property.GetCompletionValues();
    }
}

在这里,上下文以 的形式传递给方法PropertyItem。现在可以区分不同的属性并返回适当的项目。

于 2015-05-18T11:52:40.770 回答