我正在尝试在Save事件后更新Petrel窗口的名称/显示名称。
我实现了自己的NameInfo类,该类继承自NameInfo抽象类。
public class MyNameInfo : NameInfo
{
private string name = string.Empty;
private string displayName = string.Empty;
private string typeName = string.Empty;
public override bool CanChangeName
{
get { return true; } //I return true so I can change the name at runtime.
}
//Rest of the class implementation
}
我的DisplayName,Name和TypeName必须相同,所以当名称改变时,我的代码是:
public override string Name
{
get { return this.name; }
set
{
name = value;
displayName = value;
typeName = value;
OnNameChanged(this);
}
}
我在DataSourceManager的“已保存”事件中更改了我的窗口名称:
DataManager.DataSourceManager.Saved += OnSave;
我用来更新名称的代码是:
if(NameInfo.CanChangeName)
NameInfo.Name = NewName;
但是当我更改名称时,它只会在 Windows 窗口的树中更新。
我的窗口名称显示旧名称。
我不知道我还需要做些什么来实现我想要的目标。
我的窗口是一个自定义窗口
public class MyCustomWindow : ToggleWindow, INameInfoSource, IDeletable
{
有没有办法更新Window Name本身?
我是否必须订阅我的“MyCustomWindow”才能参与某些活动而我不这样做?
我真的很感谢你能给我的任何帮助!
答案 0 :(得分:3)
如何在自定义窗口中创建NameInfo?您需要将自定义窗口对象传递给MyNameInfo,以便可以在自定义窗口对象上调用OnNameChanged(窗口)。这是一个例子:
private MyNameInfo nameInfo = null;
public NameInfo NameInfo
{
get
{
if (null == nameInfo)
{
nameInfo = new MyNameInfo(this);
}
return nameInfo;
}
}
然后在MyNameInfo的Name属性的setter中,
set
{
name = value;
displayName = value;
typeName = value;
OnNameChanged(this.window);
}