MainWindow.Closing 事件并不总是在 Silverlight 4 OOB 应用程序中引发

2024-02-10

我制作了一个相当复杂的 Silverlight 4 浏览器外应用程序。我的主视图模型之一向 Application.Current.MainWindow.Closing 事件添加了一个事件处理程序。 当应用程序最初运行时,这工作得很好。它可以取消关闭操作。

然而,有时执行显示和关闭 ChildWindow 等操作后,MainWindow 的 Closing 事件不再调用我的处理程序。

在调试器中,我向 MainWindow 的底层关闭事件委托添加了一个监视。在显示 ChildWindow 之前它不为 null。然后有时ChildWindow 关闭后,委托为 null。这解释了为什么我的处理程序不再被调用。但为什么这个代表会被取消呢?为什么这种情况只是偶尔发生? 我的应用程序在任何时候都不会解除我的事件处理程序的绑定。

这是我正在观看的代表:

System.Windows.Application.Current.MainWindow.m_closingEvent

其他东西:我正在使用 Caliburn Micro


我有同样的问题。我们有一个运行 OOB 的大型 silverlight 应用程序。

由于某种原因,m_ClosingEvent 在运行一段时间后被清空。我无法找到此问题的原因,但我认为这可能与我们更改根视觉对象或我们显示的所有子窗口有关。

我正在使用 ApplicationWrapper 类。

public class ApplicationWrapper : IApplicationWrapper
{
  public void Initialize()
  {
    HookCloseEvent(true);
  }
  private void HookCloseEvent(bool hook)
  {
    if (hook && IsRunningOutOfBrowser)
    {
      Application.Current.MainWindow.Closing += OnClosing;
    }
    else
    {
      if (IsRunningOutOfBrowser)
      {
        Application.Current.MainWindow.Closing -= OnClosing;
      }
    }
  }
  private void OnClosing(object sender, ClosingEventArgs e)
  {
    InvokeClosing(e);
  }

... etc.. 
}

并且 InvokeClosing 方法从未被调用。但是当我把它改成

public class ApplicationWrapper : IApplicationWrapper 
{
  private Window _mainWindow;

  public void Initialize()
  {
    if(IsRunningOutOfBrowser)
    {
      _mainWindow = Application.Current.MainWindow;
    }
    HookCloseEvent(true);
  }

  private void HookCloseEvent(bool hook)
  {
    if (hook && IsRunningOutOfBrowser)
    {
      _mainWindow.Closing += OnClosing;
    }
    else
    {
      if (IsRunningOutOfBrowser)
      {
        _mainWindow.Closing -= OnClosing;
      }
    }
  }

  private void OnClosing(object sender, ClosingEventArgs e)
  {
    InvokeClosing(e);
  }

... etc... 
}

m_ClosingEvent 未清空。

因此,尝试将“初始”MainWindow 存储在字段中,然后检查是否可以解决您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MainWindow.Closing 事件并不总是在 Silverlight 4 OOB 应用程序中引发 的相关文章

  • LongListSelector 内的缓慢故事板动画

    我有一个 LongListSelector 其中填充了一些项目 每个项目都有一个子菜单 可以使用滑动动画显示或折叠该子菜单 问题是动画非常慢 具体取决于您在列表中点击的项目 开始和结束的时候很慢 中间很顺利 我怀疑每个动画帧都会使长列表选择
  • 带有图像或路径的自定义滑块

    我的 WP7 应用程序中有一个滑块 我想重新设计它的样式 我的默认模板有问题 我做了类似的事情 但我无法将拇指 绑定 到该值
  • 如何在 Windows Phone 7 中创建自定义文本框?

    是否可以通过创建自定义文本框来处理 sip 我想创建一个自定义文本框 gt 创建获得焦点事件 gt 在我的自定义文本框的焦点上而不是 SIP 上 我的自定义键盘应该打开 要求 如何创建自定义文本框 打开自定义键盘而不是 SIP 获取文本字段
  • 从 Silverlight OOB 访问注册表

    我可以访问吗Registry from Silverlight Out Of Browser 我只想搜索 读取键并获取键值对 这可能吗 或者 有没有其他方法 例如运行powershell script 或启动其他一些 exe 来了解这些值
  • 如何隐藏数据透视项标题?

    我希望有一个具有 PivotItems 但没有横向数据透视项标题文本的数据透视控件 它是横向模式下的画廊 当恢复为纵向时 它应该再次显示 PivotItems 标题 解决办法就是制作文字PivotItem Header 不好 因为标题文本占
  • iPhone 上的 Flash(或 Silverlight)

    我对在 iPhone 上开发应用程序感兴趣 并且作为一名 NET 和 ActionScript 开发人员 我对 Objective C Cocoa Touch 编程的学习曲线有点害怕 我知道 Adob e 已经为 iPhone 准备好了 F
  • Silverlight - 动画贝塞尔曲线画线?

    我正在构建一个小型 Silverlight 应用程序 在我的应用程序中 我需要绘制线条 类似于附图中所示的内容 我知道绘制拱形连接线 绿色 的最佳方法是使用贝塞尔曲线 我的问题是 如何对线条的绘制进行动画处理 让它们从起始 X Y 坐标开始
  • 我可以使用 Silverlight 的 WriteableBitmap 将 UI 的不可见部分保存到位图吗?

    假设我有一些网格 您需要向下滚动才能查看其所有行 并且我有兴趣保存一些当前不可见的位图行 是否可行 或者我是否必须实际向下滚动 拍摄快照 然后再次向上滚动 这是一个可行性问题 因此我没有代码可以分享 是的 您可以将任何 UIElement
  • 如何从子窗口中加载的用户控件按钮关闭子窗口?

    这是我的 ChildWindow xaml 代码 1
  • Silverlight WCF服务跨域问题

    我有一个 silverlight 应用程序 托管在 Intranet mydomain net 和一个 WCF 服务 webservices mydomain net 我需要跨站点策略文件吗 如果是这样 只允许从 Intranet mydo
  • 强制绑定更新 Silverlight

    如何强制更新我的对象 DataContext 绑定 我正在网格上使用事件 并且在事件触发之前不会处理绑定更新 有什么廉价的技巧可以解决这个问题吗 最后 我总是可以用旧的手动方式从文本框中获取值并更新我的对象 但最好让绑定为我做这件事 UPD
  • Silverlight 3 工具未显示在 Visual Studio 中

    我下载并安装了Silverlight 3 工具 http go microsoft com fwlink LinkID 143571 我想在 ASP net 页面中使用 Silverlight 服务器控件 但我的工具箱中没有 Silverl
  • WCF RIA 服务 - 返回两个已定义类的自定义类

    我有一个使用 EF 4 的 Silverlight WCF RIA 服务应用程序 当前 有一个域服务返回两种类型的类 OrderItem 和 Event 我想创建一个包含这两项的类 以便更轻松地在 XAML 级别操作数据 下面是结合了这两个
  • Silverlight Datagrid:在对列进行排序时突出显示整个列

    我的 Silverlight 应用程序中有一个 DataGrid 我想在对该列进行排序时突出显示整个列 它在概念上与上一个问题类似 Silverlight DataGrid 突出显示整列 https stackoverflow com qu
  • 如何在 Silverlight 3 中将 .NET RIA 服务与 MVVM 结合起来?

    NET RIA 服务被描述为 Silverlight 的 n 层框架 我一直想知道这个框架和模型 视图 视图模型模式之间有什么关系 它们是否存在冲突 或者您能看到协同组合的潜力吗 NET RIA 服务和 MVVM 是协同作用的 并不冲突 例
  • 为什么 WP8 LongListSelector 错误地重用了 CheckBox 的选中状态?

    我有一个带有以下模板的 WP8 LongListSelector
  • 在 silverlight 中打开响应流

    我正在尝试使用 Silverlight 3 从服务器返回图像 服务器返回响应流 如下所示 context Response ContentType imageFactory ContentType imgStream WriteTo con
  • 调度程序如何在线程中工作?

    我们有一个使用调度程序的 silverlight 应用程序 如果我能帮助解释以下代码的作用 我将不胜感激 不幸的是编写代码的开发人员已经离开 所以我们有以下内容 public class ABC private Dispatcher dis
  • 调试 Silverlight 未命中断点

    我正在尝试为学校项目开发 Silverlight 应用程序 但我遇到了 Visual Studio 无法加载断点的问题 这使得使用 ViewModel 调试 Silverlight 应用程序变得非常困难 我尝试在 项目属性 gt Web g
  • 在 Silverlight 中使用 RIA 服务时如何扩展实体?

    在我的 Silverlight 解决方案的服务器端 我有 2 个项目 提供 Silverlight 页面的网站 实体框架数据访问层 我有一个具有 FirstName 和 LastName 属性的实体 我想添加一个可从 Silverlight

随机推荐