我正在尝试将我的窗口标题绑定到我的视图模型中的属性,如下所示:
Title="{Binding WindowTitle}"
该属性如下所示:
/// <summary>
/// The window title (based on profile name)
/// </summary>
public string WindowTitle
{
get { return CurrentProfileName + " - Backup"; }
}
CurrentProfileName属性派生自另一个属性(CurrentProfilePath),只要有人打开或保存配置文件,该属性就会设置。在初始启动时,窗口标题设置正确,但是当CurrentProfilePath属性发生更改时,更改不会像我预期的那样冒泡到窗口标题。
我认为我不能在这里使用依赖属性,因为该属性是派生属性。派生它的基本属性是依赖属性,但似乎没有任何影响。
如何根据此属性使表单标题自行更新?
答案 0 :(得分:9)
那是因为WPF无法知道WindowTitle
取决于CurrentProfileName
。您的课程需要实施INotifyPropertyChanged
,当您更改CurrentProfileName
的值时,您需要针对PropertyChanged
和 {举起CurrentProfileName
事件{1}}
WindowTitle
更新
以下是private string _currentProfileName;
public string CurrentProfileName
{
get { return __currentProfileName; }
set
{
_currentProfileName = value;
OnPropertyChanged("CurrentProfileName");
OnPropertyChanged("WindowTitle");
}
}
的典型实现:
INotifyPropertyChanged