привязка строковой ссылки в WPF - PullRequest
1 голос
/ 26 апреля 2011

У меня есть привязка на мой взгляд следующим образом

 <TextBox Grid.Row="3" Grid.Column="1" DataContext="{Binding FileStore}"  Text="{Binding Path=StoreId}" Foreground="Black"/>

FileStore.StoreId - это строка. В своем коде я изменил StoreId в какой-то момент

FileStore.StoreId = "1234";

Но представление не обновляет содержимое TextBox. Я мог бы подумать об одной возможной причине - поскольку строка является неизменной, присвоение выделяет новую строку. Так, текстовое поле все еще привязывается к старому экземпляру. Ты согласен? Как мне справиться с ситуацией?

Ответы [ 2 ]

3 голосов
/ 26 апреля 2011

Ваш класс FileStore должен реализовывать INotifyPropertyChanged, чтобы механизм привязки получал уведомление при изменении значения свойства

class FileStore : INotifyPropertyChanged
{
    private string _storeId;

    public string StoreId
    {
        get { return _storeId; }
        set
        {
            _storeId = value;
            OnPropertyChanged("StoreId");
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;

    protected virtual void OnPropertyChanged(string propertyName)
    {
        var handler = PropertyChanged;
        if (handler != null)
            handler(this, new PropertyChangedEventArgs(propertyName));
    }
}
0 голосов
/ 26 апреля 2011

Вы должны понимать, что FileStore не меняется (это тот же объект), вы можете попробовать объявить новый FileStore с новым StoreId, а затем заменить текущий FileStore.

NewFileStore = new FileStoreType();
NewFileStore.StoreId="1234";
this.FileStore = NewFileStore;

В любом случае, ваш FileStoreкласс должен быть в ViewModel, который реализует INotifyPropertyChanged.

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