Не может связать со свойством или именем столбца на DataSource. Название параметра: dataMember

Это - исключение, которое я получаю, когда я пытаюсь связать с Системой. Ввести. Имя.

Вот то, что я делаю:

this.propertyTypeBindingSource.DataSource = typeof(System.Type);

/* snip */

this.nameTextBox1.DataBindings.Add(
    new System.Windows.Forms.Binding(
        "Text", 
        this.propertyTypeBindingSource, 
        "Name", true));

Есть ли некоторый прием с привязкой к Системе. Введите, разве это не позволяется или является там каким-либо обходным решением? Не имейте никаких проблем с привязкой к другим типам.

8
задан dav_i 23 August 2012 в 10:36
поделиться

2 ответа

Найденный обходным решением. Сделанный классом

public class StubPropertyType
{
    public StubPropertyType(Type type)
    {
        this.StubPropertyTypeName = type.Name;
    }

    public string StubPropertyTypeName = string.Empty;
}

созданный обязательный источник

this.propertyStubBindingSource.DataSource = typeof(StubPropertyType);

созданный экземпляр класса и связанный текстовое поле с ним.

this.nameTextBox.DataBindings.Add(
    new System.Windows.Forms.Binding(
        "Text", 
        this.propertyStubBindingSource, 
        "StubPropertyTypeName", 
        true));

работы точно как требуется.

3
ответ дан 5 December 2019 в 10:45
поделиться

Действительно, существует специальный режим Типа... этот подход используется в IDE и т.д. для конфигурирования метаданных заранее. Если Вы смотрите на сгенерированную IDE привязку, они делают вещи как:

bindingSource1.DataSource = typeof(MyObject);

высказывание, "когда мы получаем реальные данные, мы ожидаем MyObject isntance"; т.е. когда Вы просите "Имя", оно ищет свойство имени на MyObject - не Название экземпляра Типа. Это позволяет сеткам и т.д. получать свои метаданные, не имея необходимость ожидать реальных данных; но как следствие Вы не можете связать для Ввода "для реального".

Система. Код ComponentModel идентичен между простой привязкой и привязкой списка (плюс-минус менеджер по валюте), таким образом, простая привязка также наследовала это поведение. Аналогичным образом, Вы не можете связать со свойствами класса, который реализует IList/IListSource, так как это интерпретируется специальным способом.

Ваш дополнительный класс кажется разумным подходом.

13
ответ дан 5 December 2019 в 10:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: