0

我想在 PropertyGrid 中实现自动完成字符串字段,可以设置为自定义值。

这是我的字符串转换器

public class EntityNameAutocompleteConverter : StringConverter
{
    public override bool GetStandardValuesSupported(ITypeDescriptorContext context)
    {
        return true;
    }

    public override bool GetStandardValuesExclusive(ITypeDescriptorContext context)
    {
        return false;
    }

    public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
    {
        return new StandardValuesCollection(Globals.EntityCache.Select(e => e.Name).ToList());
    }
}

我将它设置为要编辑的字符串属性的 TypeConverter。

问题是可能有很多标准值。所以我想通过输入过滤它们,例如,如果我输入了“Foo”,我只会看到从下拉列表中的“Foo”开始的字符串。

这有可能吗?也许有可能从上下文或以任何其他方式获得属性的中间值?

4

1 回答 1

1

您可以使用context参数并获取当前属性值,如下所示:

public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context)
{
    // get the current property value
    string value = (string)context.PropertyDescriptor.GetValue(context.Instance);
    return new StandardValuesCollection(GetFilteredList(value));
}
于 2013-08-06T07:58:58.683 回答