Привязка данных к объекту в C#

Вы используете неправильно. Имя prop должно быть строкой с тем же значением, что и ключ, который имеет ваш объект ошибки. Примерно так:


// --> {touched.username && error.username ? 
{error. username}
: null}

Если мы следуем документации:

name

name: string [ 1115] Обязательно

Имя поля в состоянии Formik. Чтобы получить доступ к вложенным объектам или массивам, name> может также принять траекторию, подобную lodash-подобному, например social.facebook или> friends[0].firstName

blockquote>

. Посмотрите на пример в DOC:

[ 1113] https://jaredpalmer.com/formik/docs/api/errormessage

19
задан Lennart 2 January 2014 в 10:20
поделиться

5 ответов

Необходимо присвоить источник данных текстового поля, чтобы быть новым источником данных. Но дополнительно, необходимо присвоить источник данных источника данных, чтобы быть экземпляром класса.

MyDataSource.DataSource = new MyClass();
TextBox1.DataSource = MyDataSource;

Это должно работать на Вашу первичную обработку. Как другие упомянули, Вы, возможно, должны реализовать дополнительные интерфейсы на своем классе (INotifyPropertyChanged и т.д.), если Вы собираетесь быть изменением свойств класса через какие-либо фоновые процессы.

Если Вы только обновляете свойства через форму, то Вам не нужен этот шаг.

15
ответ дан 30 November 2019 в 04:08
поделиться

Похож на Вас, вероятно, нуждаются в Связываемом атрибуте на Вашем свойстве MyName (и следуют за предложением Frederik также):

   [System.ComponentModel.Bindable(true)] 
   public string MyName
   {
       get { return _myName; }
       set
       {
          if( _myName != value )
          {
              _myName = value;
              OnPropertyChanged("MyName");
          }
       }
   }

Через: http://support.microsoft.com/kb/327413

0
ответ дан 30 November 2019 в 04:08
поделиться

У меня нет кода передо мной, но я думаю, что источник данных отчасти похож на набор. Необходимо добавить экземпляр MyClass к источнику данных, и это - то, с чем свяжут поля формы. Существуют также методы для навигации через источник данных к нескольким экземплярам MyClass, но это не кажется на необходимость в этом. Проверьте документы на DataSource.

Я не думаю, что необходимо реализовать любые необычные интерфейсы. Я, кажется, помню, что существует метод на источнике данных, который позволяет Вам обновить или снова переплести текущий объект после изменения некоторых значений.

0
ответ дан 30 November 2019 в 04:08
поделиться

Необходимо реализовать интерфейс INotifyPropertyChanged к типу MyClass:

public class MyClass : INotifyPropertyChanged
{
   private string _myName;

   public string MyName
   {
       get { return _myName; }
       set
       {
          if( _myName != value )
          {
              _myName = value;
              OnPropertyChanged("MyName");
          }
       }
   }

   public event PropertyChangedEventHandler PropertyChanged;

   private void OnPropertyChanged(string propertyName)
   {
       if( PropertyChanged != null )
           PropertyChanged( this , new PropertyChangedEventArgs(propertyName) );
   }       
}

Этот интерфейс требуется для инфраструктуры DataBinding, если Вы хотите поддерживать простую привязку данных. Интерфейс INotifyPropertyChanged используется, чтобы уведомить 'привязку', что свойство изменилось, таким образом, инфраструктура DataBinding может действовать соответственно к нему.

Затем можно связать с данными свойство MyName к текстовому Свойству текстового поля.

12
ответ дан 30 November 2019 в 04:08
поделиться

Я получаю сообщение об ошибке в DataBinding.Add("TEXT", myObject, myObjectProperty) method

Вероятно, это связано с тем, что вы пропустили явный {get;set;} в объявлении свойства!

ПЛОХО:

public string FirstName;    //<-- you will not be able to bind to this property!

ХОРОШО:

public string FirstName { get; set; }
3
ответ дан 30 November 2019 в 04:08
поделиться
Другие вопросы по тегам:

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