【问题标题】:How to define closing behaviour of an instance of a Window in C#?如何在 C# 中定义窗口实例的关闭行为?
【发布时间】:2022-11-03 20:59:35
【问题描述】:

我发现可以在 .xaml 文件中的 Window 标记内添加 Closing 属性,然后在 c# 文件中定义关闭行为。

<Window 
  ...
  Closing="DataWindow_Closing">

哪个工作正常。

就我而言,我有一个在 c# 中定义的窗口实例,如下所示:


    public bool ShowDial()
    {
      var window = new Window
      {
        Content = this,
        ResizeMode = ResizeMode.NoResize
      };
      ...
    }

如何定义在 c# 中而不是在 xaml 文件中实例化的此窗口的关闭行为?

附言 我在 .xaml 文件中定义了一个 UserControl

【问题讨论】:

    标签: c# wpf xaml


    【解决方案1】:

    Closing 是一个事件。你需要给他一个倾听者。
    使用 lambda 表达式的示例。

        public bool ShowDial()
        {
          var window = new Window
          {
            Content = this,
            ResizeMode = ResizeMode.NoResize
          };
          window.Closing += (s, e) =>
          {
              // Some Code
          };
          ...
        }
    

    【讨论】:

      【解决方案2】:

      Closing 是一个事件:参见 Window.Closing Event

      附加事件处理程序

      window.Closing += Window_Closing;
      

      并将处理程序声明为

      void Window_Closing(object sender, CancelEventArgs e)
      {
          //TODO: add your code here
      }
      

      当您在 Visual Studio 中键入 window.Closing+= 时,会弹出一个工具提示,邀请您按标签.

      如果这样做,将自动为您创建事件处理程序,如下所示:

      private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
      {
          throw new System.NotImplementedException();
      }
      

      在这个处理程序中,如果你不想关闭窗口,你可以设置e.Cancel = true;,例如当验证失败并且无法保存数据时。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-29
        • 2014-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-01
        • 2019-07-21
        • 1970-01-01
        相关资源
        最近更新 更多