为什么不触发usercontrols加载的事件

时间:2011-07-08 08:30:00

标签: wpf events event-handling load code-behind

我有一个用户控件。我有时会再遇到这种情况,但可以通过使用“New()构造函数”来解决这个问题。但我仍然想知道我做错了什么,因为如果加载了控件就必须触发加载事件

以下是一些代码:

<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>

在usercontrol中,在WPF上声明load事件或代码发送没有任何成功! Usercontrol wpf

Usercontrol codebehind

2 个答案:

答案 0 :(得分:10)

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

确保您可以确切地看到正在发生的错误:

  1. 在VS2010中转到Debug |异常。
  2. 勾选“Thrown”异常无线电框,了解可能适用于您的情况的例外情况。
  3. 重新运行应用程序,VS2010应该打破事件处理程序中抛出的异常。
  4. 根据现在已知的异常进行调试。

答案 1 :(得分:3)

你的UserControl构造函数是否仍然会调用InitializeComponent(),如果没有这个,它将不会构建其视觉效果,并且Loaded事件可能不会触发。