2011-01-06 9 views
6

Rakipler hakkında bilgi içeren bir datagridview var. Her bir görüntüleyicinin özelliklerini PropertyGrid'de görüntülerim. Bu özelliklerden bazılarının (örneğin, Derece, Şehir, Enstitü) veri tabanından alınan değerlerle birlikte dropbox olmasını istiyorum. Bu amaçla ben buDeğişken Standart Değerler ile Özel TipConverter

class DegreeTypeConverter : StringConverter 
{ 
    static string[] _valueList = { "Bachelor", "Master", "Student" }; 

    public override bool GetStandardValuesSupported(
    ITypeDescriptorContext context) 
    { 
    return true; 
    } 

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


    public override StandardValuesCollection GetStandardValues(
    ITypeDescriptorContext context) 
    { 
    return new StandardValuesCollection(_valueList); 
    } 
} 

[TypeConverter(typeof(DegreeTypeConverter))] 
    public string Degree 
    { 
    get { return _degree; } 
    set { _degree = value; } 
    } 

gibi özel bir TypeConvertor oluşturabilir Ama valueList bu veritabanından almak istiyorum ve ben bu yüzden bazı evrensel dönüştürücü tek fark 14 dönüştürücüler çok daha iyi olurdu 14 tür özelliklere sahiptir: valueList. Değişken valueList ile bir TypeConverter oluşturmak mümkün mü (örneğin, constructor parametresi olarak TypeConverter içine geçti)? Veya PropertyGrid'de değişken değer listesindeki bir dropbox'ta başka bir yol var mı? Umarız Thnx önceden

cevap

5

GetStandardValues ​​yönteminde bir bağlam verilir. Mülkünüzü tutan nesneyi erişmek için context.Instance kullanın. Ardından, size DB hizmetlerini verecek bir servis sağlayıcısını almak için sorgulayın. Kendi API'niz aracılığıyla olabilir ya da IServiceProvider'dan türetebilir ve GetService'i uygulayabilir ya da neden IOC kapsayıcınızdan tekil olarak elde edemezsiniz?

İlgili konular