C# 如何更新海燕窗口的名称?

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;

我正在尝试在保存事件后更新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”,但我没有这样做


我真的很感激你能给我的任何帮助

如何在自定义窗口中创建名称信息?您需要将自定义窗口对象传递给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);
}