我有一个用户控件。我再次遇到过这种情况,但可以通过使用“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事件!
你有没有想过是什么问题?我目前面临同样的问题。 – pikausp
不,我没有。我在LayoutUpdated事件中使用了自己的booelan来检查控件是否是第一次绘制的。在这种情况下,我会初始化一些东西,比如在Load事件中。 – Nasenbaer
该解决方案不健康。造成这种情况的原因通常是组件初始化期间抛出的异常,并且在控件加载完成之前就会有效地停止初始化。 除非您将初始化放在try/catch中,否则不会处理这些异常。你不会注意到它在调试器中,除了副作用是在异常之后初始化的所有控制器从未完全加载。因此,他们加载的事件永远不会被解雇。您应该检查所有初始化代码以查找异常,例如,通过执行代码。 – Henrik