2011-07-08 69 views
4

我有一个用户控件。我再次遇到过这种情况,但可以通过使用“New()构造器”来解决它。但我仍然想知道我做错了什么,因为加载事件必须被解雇,如果控制加载为什么usercontrols加载事件没有被解雇

下面是一些代码:

<Window x:Class="MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     xmlns:my="clr-namespace:OUTPUT___VideoContent" 
    Title="OUTPUT - VideoContent" Height="350" Width="525" Icon="/OUTPUT%20-%20VideoContent;component/Images/VideoContent.png"> 
    <Grid x:Name="LayoutRoot"> 
     <Grid x:Name="VideoGrid"> 
      <my:ucVideoPresenter x:Name="VideoPresenter1"/> 
      <TextBlock x:Name="txtInfo" Visibility="Collapsed" /> 
     </Grid> 
    </Grid> 
</Window> 

,并在用户控件,被宣布WPF或没有任何成功codebehing load事件! Usercontrol wpf

Usercontrol codebehind

+0

你有没有想过是什么问题?我目前面临同样的问题。 – pikausp

+0

不,我没有。我在LayoutUpdated事件中使用了自己的booelan来检查控件是否是第一次绘制的。在这种情况下,我会初始化一些东西,比如在Load事件中。 – Nasenbaer

+0

该解决方案不健康。造成这种情况的原因通常是组件初始化期间抛出的异常,并且在控件加载完成之前就会有效地停止初始化。 除非您将初始化放在try/catch中,否则不会处理这些异常。你不会注意到它在调试器中,除了副作用是在异常之后初始化的所有控制器从未完全加载。因此,他们加载的事件永远不会被解雇。您应该检查所有初始化代码以查找异常,例如,通过执行代码。 – Henrik

回答

3

请问您的用户控件的构造还是拨打电话InitializeComponent(),如果没有这个,就不会建立自己的视觉效果和Loaded事件可能不火。

+0

它已初始化,是的。 – Nasenbaer

+0

这是我的问题。感谢您的提醒。 – KeithS

10

这是因为'Loaded'事件处理程序正在引发异常。异常可能是由于混合模式程序集或其他一些“用户处理”的异常而发生的,并且WPF框架正在捕获它(调试器未知)。这会导致调试器在Loaded方法中设置断点时不会中断。

为了确保你能看到什么错误发生:

  1. 在VS2010去调试|例外。
  2. 选中可能适用于您的情况的例外情况的“引发”异常无线电框。
  3. 重新运行应用程序,VS2010应该在事件处理程序中抛出的异常中断。
  4. 根据现在已知的例外进行调试。
+0

你知道如何添加事件处理程序“not firing”异常吗? “添加”选项不会给任何事件准备好界限,也没有任何与“System.Windows.Input”接近的内容。 – EpiGen