Почему событие Binding Format вызывается дважды? - PullRequest
1 голос
/ 13 июля 2010

Я играю с привязкой данных и заметил, что формат привязки вызывается дважды при загрузке формы в коде ниже.Я думал, что это произойдет только один раз, когда свойство TextBoxText тестового класса будет связано с textbox1.Это нормально?Если нет, то что я могу сделать, чтобы предотвратить это?Обратите внимание: когда я нажимаю кнопку button1, и она изменяет свойство TextBoxText тестового класса, событие форматирования запускается один раз, как и ожидалось.

public partial class Form1 : Form
{
    Test _test = new Test();
    public Form1()
    {
        InitializeComponent();
        Binding binding = new Binding("Text", _test, "TextBoxText");
        binding.Format += new ConvertEventHandler(Binding_Format);
        this.textBox1.DataBindings.Add(binding);
    }

    private void Binding_Format(object sender, ConvertEventArgs e)
    {            
        Debug.WriteLine("Format");
    }

    private void button1_Click(object sender, EventArgs e)
    {
        _test.TextBoxText = "test1";
    }
}



class Test : INotifyPropertyChanged
{
    private string _text;

    public string TextBoxText 
    {
        get { return _text; }
        set 
        { 
            _text = value;
            OnPropertyChanged(new PropertyChangedEventArgs("TextBoxText"));
        } 
    }

    private void OnPropertyChanged(PropertyChangedEventArgs e)
    {
        PropertyChanged(this, e);
    }

    #region INotifyPropertyChanged Members

    public event PropertyChangedEventHandler PropertyChanged;

    #endregion

1 Ответ

1 голос
/ 13 июля 2010

Простой ответ: «Потому что так Microsoft это реализовала».

Цель состоит в том, чтобы просто отреагировать на событие ... всякий раз, когда это происходит ... как бы часто это ни происходило.Мы не можем делать какие-либо предположения.В некоторых случаях вам могут звонить шесть раз на одном и том же событии.

Надо просто катиться с ним и продолжать быть потрясающим.

...