【问题标题】:Silverlight ChildWindow.Closed event fires immediately after .Show()Silverlight ChildWindow.Closed 事件在 .Show() 之后立即触发
【发布时间】:2012-11-05 16:30:06
【问题描述】:

我正在尝试在 silverlight 中创建一个 ChildWindow,以便用户输入一些数据。每当我调用.Show() 函数时,.Closed 事件就会立即触发。浏览器(IE8)然后一遍又一遍地抛出这个消息:

Line: 56
Error: Unhandled Error in Silverlight Application 
Code: 2272    
Category: ParserError       
Message: Cannot find a Resource with the Name/Key PhoneDisabledBrush     
File:      
Line: 43     
Position: 155     

如果我点击这条消息大约 15 次,它最终会在 IE 中给我一个堆栈溢出错误。在此消息出现之前,我从未真正看到 ChildWindow 被显示,但是,在这些错误发生之前,它确实经历了 .Closed 事件。

子窗口目前没有代码,只是添加了一些基本的silverlight控件(文本块、文本框等)

子窗口是这样实例化的:

    public TickerAdminControl()
    {
        InitializeComponent();
        winNewMsg = new windAddNewTickerMessage();
        winNewMsg.Closed += new EventHandler(winNewMsg_Closed);
    }

.Closed 事件如下所示:

    void winNewMsg_Closed(object sender, EventArgs e)
    {
        if (winNewMsg.DialogResult == true)
        {
            TickerProxy.GetAllMessagesAsync();
        }
    }

它真的再简单不过了,所以我对这个错误感到困惑。 .Show() 在 UserControl 上的简单按钮单击事件中被调用。

编辑:这只发生在 IE 上。如果我使用 Chrome,它无需更改任何代码即可工作。

第二次编辑:这似乎只发生在我从 Visual Studio 在调试中运行时。如果我手动启动站点(http://localhost:3881/Default.aspx)一切正常,这就是它在 Chrome 中工作的原因。当我手动访问它时,它也适用于 IE8。我想我现在更加困惑了。

第 3 次编辑:虽然在非调试模式下运行时一切正常,但错误仍然存​​在,但允许子窗口正常显示。在左下角,我收到一条“错误”消息,如果我单击它,它会重复此错误 15 次:

Message: Unhandled Error in Silverlight Application Error HRESULT E_FAIL has been returned from a call to a COM component.   
at MS.Internal.XcpImports.VisualStateManager_GoToState(Control reference, String StateName, Boolean useTransitions, Boolean& refreshInheritanceContext)
at System.Windows.VisualStateManager.GoToState(Control control, String stateName, Boolean useTransitions)
   at System.Windows.Controls.HyperlinkButton.ChangeVisualState(Boolean useTransitions)
   at System.Windows.Controls.Primitives.ButtonBase.UpdateStateFlags(Boolean disable)
   at System.Windows.Controls.Primitives.ButtonBase.OnIsEnabledChanged(IsEnabledChangedEventArgs e)
   at System.Windows.Controls.Control.OnIsEnabledChanged(Control control, EventArgs args)
   at MS.Internal.JoltHelper.FireEvent(IntPtr unmanagedObj, IntPtr unmanagedObjArgs, Int32 argsTypeIndex, Int32 actualArgsTypeIndex, String eventName, UInt32 flags)
Line: 1
Char: 1
Code: 0
URI: http://localhost:3881/default.aspx

【问题讨论】:

    标签: c# silverlight


    【解决方案1】:

    问题解决了。原来我在调用 ChildWindow 的应用程序上有一组样式化的超链接按钮,这些按钮被设置为查找不存在的静态资源“PhoneDisabledBrush”。这以前从未出现过,因为我从未将它们更改为禁用。 VS2010 不会为此通过编译时异常似乎有点奇怪,但我只是删除了代码并且它运行顺利。

    【讨论】:

      猜你喜欢
      • 2020-03-29
      • 1970-01-01
      • 2013-11-07
      • 1970-01-01
      • 2012-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多