我试图在保存事件之后更新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;但是,当我更改名称时,它只会在窗口的树中更新。
我的窗口的名字显示了旧的名字。
我不知道我还需要做些什么来实现我想要的。
我的窗口是自定义窗口
public class MyCustomWindow : ToggleWindow, INameInfoSource, IDeletable
{是否有更新窗口名称本身的方法?
我是否必须订阅我的"MyCustomWindow“来参加某些活动,而我却不这么做呢?
我真的很感激你能给我的任何帮助!
发布于 2013-06-17 12:25:06
如何在自定义窗口中创建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);
}https://stackoverflow.com/questions/17117029
复制相似问题