Как установить настраиваемые свойства для привязываемого элемента управления Winforms? - PullRequest
3 голосов
/ 28 октября 2009

У меня есть некоторые свойства, такие как OverlayColor и т. Д., Которые я хочу привязать к экземпляру другого типа, но связанные данные просто не меняются.

Я использую это:

[Bindable ( true )]
public Color OverlayColor { get; set; }

Пользовательский интерфейс изменяется, но не связанные данные. Имя свойства связанных данных - Color.

1 Ответ

5 голосов
/ 30 июля 2011

Как я понимаю, атрибут Bindable должен добавить свойство под (DataBindings) для текущего элемента управления.

Чтобы устранить проблему, связанную с тем, что OverlayColor не обновляется в привязке, необходимо реализовать интерфейс INotifyPropertyChanged для объекта, к которому вы привязываете. При изменении связанного объекта вы должны вызвать событие NotifyPropertyChanged.

В приведенном ниже примере я создал класс данных, который я использую для привязки и вызова метода ChangeColor () для изменения цвета.

public class Data : INotifyPropertyChanged
{
  Color overlayColor = Color.Teal;

  public event PropertyChangedEventHandler PropertyChanged;

  public Data()
  {
  }

  public Color OverlayColor
  {
    get
    {
      return overlayColor;
    }
    set
    {
      overlayColor = value;
      NotifyPropertyChanged( "OverlayColor" );
    }
  }

  public void ChangeColor()
  {
    if ( OverlayColor != Color.Tomato )
      OverlayColor = Color.Tomato;
    else
      OverlayColor = Color.DarkCyan;
  }

  private void NotifyPropertyChanged( string propertyName )
  {
    if ( PropertyChanged != null )
      PropertyChanged( this, new PropertyChangedEventArgs( propertyName ) );
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...