C# 如何更新海燕窗口的名称?
我正在尝试在保存事件后更新Petrel窗口的名称/显示名称 我实现了自己的NameInfo类,该类继承自NameInfo抽象类C# 如何更新海燕窗口的名称?,c#,ocean,petrel,C#,Ocean,Petrel,我正在尝试在保存事件后更新Petrel窗口的名称/显示名称 我实现了自己的NameInfo类,该类继承自NameInfo抽象类 public class MyNameInfo : NameInfo { private string name = string.Empty; private string displayName = string.Empty; private string typeName = string.Empty;
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”,但我没有这样做
我真的很感激你能给我的任何帮助 如何在自定义窗口中创建名称信息?您需要将自定义窗口对象传递给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);
}
如何在自定义窗口中创建名称信息?您需要将自定义窗口对象传递给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);
}