У меня есть текстовый блок, связанный с объектом. Двухстороннее связывание работает хорошо и как ожидалось.
В коде позади:
txtNumberOfPlayers.DataContext = tournament.ChipSet;
В .xaml:
<toolkit:NumericUpDown x:Name="txtNumberOfPlayers" Value="{Binding NumberOfPlayers, Mode=TwoWay, NotifyOnValidationError=true, ValidatesOnExceptions=true}" />
В классе Chipset я выдаю уведомление об изменении, когда установлено NumberOfPlayers (OnPropertyChanged("NumberOfPlayers");)
Но ... когда я полностью переназначаю объект, он не обновляет пользовательский интерфейс, пока я не вызову назначение datacontext снова. Например, допустим, я загружаю другой объект набора микросхем.
Chipset newChipSet = LoadChipset();
tournament.ChipSet = newChipSet;
Это не обновляет txtNumberOfPlayers, когда присваивание выполнено. Это работает только если я делаю это:
Chipset newChipSet = LoadChipset();
tournament.ChipSet = newChipSet;
//have to call this again which seems redundant
txtNumberOfPlayers.DataContext = tournament.ChipSet;
Так что я подумал, может быть, мне нужно поместить уведомление об изменении в объект Chipset следующим образом:
private Chipset chipset;
public Chipset ChipSet
{
get { return chipset; }
set
{
if (chipset != value)
{
chipset = value;
OnPropertyChanged("ChipSet");
}
}
}
но это не работает.
Итак, мои вопросы: как мне обновить пользовательский интерфейс, когда я назначаю новый объект старому без повторного связывания текста данных.
Спасибо!