我正在尝试将窗口标题绑定到视图模型中的属性,如下所示:
Title="{Binding WindowTitle}"
该属性看起来像这样:
/// <summary>
/// The window title (based on profile name)
/// </summary>
public string WindowTitle
{
get { return CurrentProfileName + " - Backup"; }
}
CurrentProfileName 属性派生自另一个属性 (CurrentProfilePath),每当有人打开或保存配置文件时都会设置该属性。在初始启动时,窗口标题设置正确,但是当 CurrentProfilePath 属性发生更改时,更改不会像我预期的那样冒泡到窗口标题。
我认为我不能在这里使用依赖属性,因为该属性是派生属性。派生它的基本属性是依赖属性,但这似乎没有任何效果。
如何使表单标题根据此属性自动更新?
那是因为 WPF 无法知道这一点WindowTitle
依赖于取决于CurrentProfileName
。你的班级需要实施INotifyPropertyChanged
,当你改变值时CurrentProfileName
,你需要提高PropertyChanged
活动为CurrentProfileName
and WindowTitle
private string _currentProfileName;
public string CurrentProfileName
{
get { return __currentProfileName; }
set
{
_currentProfileName = value;
OnPropertyChanged("CurrentProfileName");
OnPropertyChanged("WindowTitle");
}
}
UPDATE
这是一个典型的实现INotifyPropertyChanged
:
public class MyClass : INotifyPropertyChanged
{
// The event declared in the interface
public event PropertyChangedEventHandler PropertyChanged;
// Helper method to raise the event
protected virtual void OnPropertyChanged(string propertyName)
{
PropertyChangedEventHandler handler = PropertyChanged;
if (handler != null)
handler(this, new PropertyChangedEventArgs(propertyName);
}
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)