none
Привязка своего класса к данным RRS feed

  • Общие обсуждения

  • Есть класс, который пытаюсь привязать к DataTable. Не получается, Position у BindingSource не меняется.

    Код класса:

    class InterRepresentation : IBindableComponent, INotifyPropertyChanged
      {
        public event EventHandler DocKChanged;
        public event PropertyChangedEventHandler PropertyChanged;
        private int _DocK = 0;
        [property: BindableAttribute(true, BindingDirection.TwoWay)]
        [property: SettingsBindableAttribute(true)]
        public int DocK
        {
          get return _DocK; }
          set
          {
            _DocK = value;
            if (DocKChanged != null)
              DocKChanged(thisnew EventArgs());
            OnPropertyChanged("DocK");
          }
        }
        protected void OnPropertyChanged(string name)
        {
          PropertyChangedEventHandler handler = PropertyChanged;
          if (handler != null)
          {
            handler(thisnew PropertyChangedEventArgs(name));
          }
        }
        #region IBindableComponent Members
        private BindingContext bindingContext;
        private ControlBindingsCollection dataBindings;
        public BindingContext BindingContext
        {
          get
          {
            if (bindingContext == null)
            {
              bindingContext = new BindingContext();
            }
            return bindingContext;
          }
          set
          {
            bindingContext = value;
          }
        }
        public ControlBindingsCollection DataBindings
        {
          get
          {
            if (dataBindings == null)
            {
              dataBindings = new ControlBindingsCollection(this);
            }
            return dataBindings;
          }
        }
        #endregion
        #region IComponent Members
        public event EventHandler Disposed;
        ISite site;
        public ISite Site
        {
          get
          {
            return site;
          }
          set
          {
            site = value;
          }
        }
        #endregion
        #region IDisposable Members
        public void Dispose()
        {
          if (Disposed != null)
            Disposed(this, EventArgs.Empty);
        }
        #endregion

      }

    Привязка класса:

     this.InterRep = new InterRepresentation();//this - это форма
    ---
    this.InterRep.DataBindings.Add(new Binding("DocK", RegisteredProcesses, "ProcType"));

    this.textBox2.DataBindings.Add(new Binding("Text", RegisteredProcesses, "ProcType"));//здесь для примера привязываю текстбокс

    При перемещении по строкам таблицы (DataTable) RegisteredProcesses (эта таблица привязана к DataGridView) textBox2.Text меняется, а свойство DocK объекта InterRep типа InterRepresentation остается неизменным.
    В чем проблема?

    Когда кликаю по заголовкам столбцов DataGridView (сортируя его строки), привязанного к RegisteredProcesses, свойство DocK объекта InterRep меняется. 

     

    26 ноября 2014 г. 15:30