【问题标题】:Silverlight controls not loadingSilverlight 控件未加载
【发布时间】:2009-08-12 13:31:35
【问题描述】:

我正在开发 Silverlight 3.0 应用程序,每 10 或 20 次中大约有 1 次,我创建的 UserControl 不会与应用程序的其余部分一起加载。应用程序的其余部分正确加载和运行。到目前为止,我一直是从 Visual Studio 独家推出的,但我想确定这不是在实际部署时会发生的事情。

有谁知道这可能是什么原因造成的?有其他人经历过吗?

编辑:控件的构造函数(所有动画都已初始化)

        InitializeComponent();

        m_CenterXAnimation.Duration = new TimeSpan(0, 0, 0, 0, 800);
        m_CenterYAnimation.Duration = new TimeSpan(0, 0, 0, 0, 800);

        m_FadeOutAnimation.Duration = new TimeSpan(0, 0, 5);
        m_FadeInAnimation.Duration = new TimeSpan(0, 0, 5);
        m_FadeOutAnimation.To = 0;
        m_FadeInAnimation.To = 1;

        m_ScaleDownAnimation.Duration = new TimeSpan(0, 0, 0, 0, 800);
        m_ScaleUpAnimation.Duration = new TimeSpan(0, 0, 0, 0, 800);
        m_ScaleDownAnimation.To = 1;
        m_ScaleUpAnimation.To = 1.1;   

        App.Current.Host.Content.Resized += new EventHandler(Content_Resized);

【问题讨论】:

    标签: silverlight silverlight-3.0


    【解决方案1】:

    在我看来,您在 UserControl 中遇到了一个异常,该异常不会导致完全崩溃,但会阻止您的控件完成初始化。您可以尝试调试 UserControl 的初始化及其绑定 - 首先在 App 类的未处理异常处理程序中放置一个断点。

    【讨论】:

    • 这听起来很合理,但构造函数相当简单(并且在我添加此评论后立即添加到问题中)并且它似乎没有任何东西可能会引发异常阻止它初始化,尤其是在一小部分时间。
    • 初始化不仅仅意味着构造函数,它还意味着你的 XAML 和所有的绑定。
    • 我刚回来添加评论解决这个问题 :) XAML 非常普通;我没有添加任何绑定,并且包含的​​唯一非标准控件是带有故事板的简单路径以对其进行动画处理。您认为其中任何一个都可能导致问题吗?
    • 我以前见过故事板的竞争条件,但我并不是说这就是这种情况下的问题。您是否尝试过禁用情节提要以查看问题是否消失?
    • 这个我没试过。问题的一个特别烦人的部分是它很少发生,所以即使没有任何更改我也很难重现它。比赛条件将在哪里/如何发生?
    【解决方案2】:

    我怀疑问题出在 UserControl 上。听起来像是时间问题。我遇到过类似的问题,但它是由应用程序的其他部分引起的——通常是事件触发的顺序。您的示例代码没有问题 - 问题出在其他地方。

    【讨论】:

    • 哪些事件导致了这种情况?自从我部署了应用程序后,我注意到它发生的频率要高得多(从远程位置加载比从本地加载更频繁。)
    • 这很复杂,我忘记了细节 - 抱歉。在向 Web 服务发出请求后,我在代码(不是 xaml)中动态加载用户控件。它动态创建用户控件的实例,然后调用一些初始化并添加子控件。这是在 UserControl Loaded 事件触发之前发生的。在某些情况下,这会导致控件无法呈现。我将一些代码移到 Loaded 事件之后,它似乎解决了问题。
    猜你喜欢
    • 2012-06-27
    • 2011-10-28
    • 1970-01-01
    • 2011-06-30
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多