Невозможно правильно реализовать привязку между значением свойства объекта и значением свойства элемента управления - PullRequest
2 голосов
/ 29 апреля 2011

Я пытаюсь обновить элемент управления textedit через привязки данных объекта класса Client с помощью реализации INotifyPropertyChanged, и не могу заставить его работать. Объект позади (источник данных) обновляется, но textedit все еще остается пустым. Если я наберу текст в поле ввода, источник данных будет обновлен. Не могли бы вы помочь, пожалуйста? Вот соответствующий код, который я использую:

public class Client : NotifyProperyChangedBase
{

    private string _firstname;
    public string Firstname
    {
        get
        {
            return this._firstname;
        }
        set
        {
            this.CheckPropertyChanged<string>("Firstname", ref _firstname, ref value);
        }
    }
}


public Client ClientA = new Client();

Binding fname = new Binding("Text", ClientA, "Firstname", true, DataSourceUpdateMode.OnPropertyChanged);

ultraTextEditor_firstname.DataBindings.Add(fname);

ClientA.Firstname = "testN"; <== поле ввода остается пустым ... </p>

Я что-то здесь упускаю? Заранее спасибо, Питер.

1 Ответ

0 голосов
/ 29 апреля 2011

Я предполагаю, что ваша база реализована в соответствии с в этом примере .Если я ошибаюсь в своем предположении, вам потребуется предоставить реализацию вашего класса NotifyProperyChangedBase.

Вы также можете просмотреть Binding (String, Object, String, Boolean, DataSourceUpdateMode) документация конструктора, так как она обсуждает события управления, которые пытается найти привязка.

Глядя на этот пример, вы захотите попробовать что-то вроде этого:

System.ComponentModel.BindingList<Client> bindings = new System.ComponentModel.BindingList<Client>();

Client clientA = bindings.AddNew();
clientA.Firstname = "John";

textEditControl.DataSource = bindings;

// This change presumably will be refelected in control
clientA.Firstname = "Jane";

Update : после просмотра документации по Add методу ControlBindingsCollection ;Я считаю, что источник данных привязки должен реализовывать интерфейс IListSource , чтобы правильно участвовать в привязке (все примеры MSDN - это DataSet или DataTable, которые реализуют этот интерфейс).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...