TextBox - свойство привязки не обновляется само - PullRequest
1 голос
/ 29 августа 2010

У меня есть текстовое поле, свойство Text которого связано так

   <TextBox Name="txtBox">
        <TextBox.Text>
            <Binding Path="Data">

            </Binding>
        </TextBox.Text>
    </TextBox>

Поданные данные могут быть изменены в разных местах моей программы. Однако если я изменяю поданные данные в другом элементе управления, свойство t txtBox Text не обновляется само. Я до сих пор вижу старое значение (несмотря на то, что поле данных было изменено). Есть ли способ заставить текстовое поле обновить itselft или sth?

Ответы [ 2 ]

5 голосов
/ 29 августа 2010

Чтобы ваше текстовое поле знало, когда изменяются данные, с которыми оно связано, класс, с которым он связан, должен реализовывать INotifyPropertyChanged.Ниже приведен пример на C #.Если вы связываете текстовое поле со свойством Data, текстовое поле должно обновляться при выполнении установщика свойства Data.Обратите внимание, что для INotifyPropertyChanged потребуется ссылка на пространство имен System.ComponentModel (Использование в C # или Импорт в VB).

public class MyData : INotifyPropertyChanged
{
    string _data;

    public event PropertyChangedEventHandler PropertyChanged;

    public void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }

    public string Data
    {
        get
        {
            return _data;
        }

        set
        {
            _data = value;
            this.OnPropertyChanged("Data");
        }
    }
}
0 голосов
/ 29 августа 2010

Ваш объект-владелец свойства данных реализует INotifyPropertyChanged? если нет, то реализуй его и запусти PropertyChanged, когда твое заданное свойство называется

...