Я думаю, что это должно быть легко, но я не могу понять это.
Взять эти свойства из примера ViewModel (ObservableViewModel реализует INotifyPropertyChanged):
class NameViewModel : ObservableViewModel
{
Boolean mShowFullName = false;
string mFirstName = "Wonko";
string mLastName = "DeSane";
private readonly DelegateCommand mToggleName;
public NameViewModel()
{
mToggleName = new DelegateCommand(() => ShowFullName = !mShowFullName);
}
public ICommand ToggleNameCommand
{
get { return mToggleName; }
}
public Boolean ShowFullName
{
get { return mShowFullName; }
set { SetPropertyValue("ShowFullName", ref mShowFullName, value); }
}
public string Name
{
get { return (mShowFullName ? this.FullName : this.Initials); }
}
public string FullName
{
get { return mFirstName + " " + mLastName; }
}
public string Initials
{
get { return mFirstName.Substring(0, 1) + "." + mLastName.Substring(0, 1) + "."; }
}
}
Суть такого [вставьте здесь свое прилагательное] Представление с использованием этой модели представления может выглядеть следующим образом:
<TextBlock x:Name="txtName"
Grid.Row="0"
Text="{Binding Name}" />
<Button x:Name="btnToggleName"
Command="{Binding ToggleNameCommand}"
Content="Toggle Name"
Grid.Row="1" />
Проблема, с которой я сталкиваюсь, - это когда запускается команда ToggleNameCommand. Свойство ShowFullName корректно обновляется командой, но привязка имени никогда не обновляется в представлении.
Чего мне не хватает? Как заставить принудительно обновить привязку? Нужно ли реализовывать свойства Name как DependencyProperties (и, следовательно, наследовать от DependencyObject)? Мне кажется, это немного тяжеловесно, и я надеюсь на более простое решение.
Спасибо,
WTS