Привязка данных и элементы управления - PullRequest
4 голосов
/ 13 января 2010

У нас есть следующая операция над элементом управления в нашем приложении WinForms.

public class BindableDataItem
{
   public bool Visible {get; set; }
   public bool Enabled {get;set;}

}

Теперь мы хотим связать BindableDataItem с TextBox.

Здесь обязательна ассоциация.

TextBox.Enabled <==> BindableDataItem.Enabled

TextBox.Visible <==> BindableDataItem.Visible

Теперь один объект BindableDataItem может быть связан со многими элементами управления другого типа.

Путем вызова (BindableDataItem) obj.Enabled = false следует отключить все элементы управления, прикрепленные к объекту BindableDataItem.

Любая помощь приветствуется.

Ответы [ 2 ]

2 голосов
/ 13 января 2010

Вот как это делается

class MyDataSouce : INotifyPropertyChanged 
{
    public event PropertyChangedEventHandler PropertyChanged = delegate { };

    private bool enabled=true, visible=true;

    public bool Enabled {
        get { return enabled; }
        set {
            enabled= value;
            PropertyChanged(this, new PropertyChangedEventArgs("Enabled"));
        }

    }

    public bool Visible {
        get { return visible; }
        set {
            visible = value;
            PropertyChanged(this, new PropertyChangedEventArgs("Visible"));
        }
    }
}

Теперь свяжите элементы управления в вашей форме с вашим источником данных.

MyDataSouce dataSource = new MyDataSouce();
foreach (Control ctl in this.Controls) {

    ctl.DataBindings.Add(new Binding("Enabled", dataSource, "Enabled"));
    ctl.DataBindings.Add(new Binding("Visible", dataSource, "Visible"));

}

Теперь вы можете включать / отключать элементы управления, например,

dataSource.Enabled = false;
0 голосов
/ 13 января 2010

для того, чтобы привязка работала, этот BindableDataItem должен реализовывать интерфейс INotifyPropertyChange. ты сделал это?

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