Binding в WinForms
От: Хэлкар  
Дата: 24.05.11 09:43
Оценка:
Доброго всем дня.
Давно не занимался работой с WinForms а тут получилось, что надо позаниматься. И возник вопрос. Хочу сделать форму, управляемую через binding (типа такой тупой MVVM).
Например у меня есть класс:

public class EditorModel : INotifyPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;

    private string _name;
    /// <summary>
    /// Текст на кнопке
    /// </summary>
    public string Name
    {
        get { return _name; }
        set
        {
            FirePropertyChanged("Name");
            _name = value;
        }
    }

    private bool _enabled;
    /// <summary>
    /// Включена ли кнопка
    /// </summary>
    public bool Enabled
    {
        get { return _enabled; }
        set
        {
            FirePropertyChanged("Enabled");
            _enabled = value;
        }
    }

    private void FirePropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }
}
Для него есть DataSource и BindingSource. Вопрос, надо ли создавать отдельные BindingSources для привязки каждого свойства? Или я неправильно понимаю? Ткните пожалуйста носом в ман по тому, как делать такие интерфейсы.
Спасибо!


24.05.11 14:42: Перенесено из '.NET'
Re: Binding в WinForms
От: Poul_Ko Казахстан  
Дата: 24.05.11 10:15
Оценка: 6 (1)
Здравствуйте, Хэлкар, Вы писали:

Х>[/c#]Для него есть DataSource и BindingSource. Вопрос, надо ли создавать отдельные BindingSources для привязки каждого свойства? Или я неправильно понимаю? Ткните пожалуйста носом в ман по тому, как делать такие интерфейсы.


Вот так по идее осуществляется привязка свойств объектов к контролам:
BindingSource bindingSource = new BindingSource(editorModel, null);
...

TextBox textBox = ...;

// Привязываем содержимое TextBox к значению свойства Name объекта модели
textBox.DataBindings.Add("Text", bindingSource, "Name");
Brainbench transcript #6370594
Re: Binding в WinForms
От: Хэлкар  
Дата: 24.05.11 10:42
Оценка:
Да, извиняюсь, веткой ошибся.
Re[2]: Binding в WinForms
От: Хэлкар  
Дата: 24.05.11 10:48
Оценка:
Все, вспонмил, спасибо!
Re[2]: Binding в WinForms
От: Хэлкар  
Дата: 24.05.11 18:35
Оценка:
Еще вопросик в догонку тогда. Можно ли как-то реализовывать конвертеры (как в WPF)? Т.е. например у меня есть булевское поле, но некоторые контролы должны быть привязаны к нему инвертированно. Как это сделать?
Re[3]: Binding в WinForms
От: i1yich  
Дата: 25.05.11 18:06
Оценка: 6 (1)
Здравствуйте, Хэлкар, Вы писали:

Х>Еще вопросик в догонку тогда. Можно ли как-то реализовывать конвертеры (как в WPF)? Т.е. например у меня есть булевское поле, но некоторые контролы должны быть привязаны к нему инвертированно. Как это сделать?


У класса Binding есть события Format и Parse — подпишись на них. В Format делается преобразование из источника в контрол, в Parse — из контрола в источник.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.