2011-07-08 22 views
4

私はユーザーコントロールを持っています。私はこの状況を何度か繰り返しましたが、 "New()コンストラクタ"を使っていつも修正することができました。でも、コントロールがロードされた場合には、ロードイベントが発生する必要があるので、私が間違っていることはまだあります。!ここでusercontrols loadedイベントが発生しない理由

は、いくつかのコードは次のとおりです。

<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に宣言されています! Usercontrol wpf

Usercontrol codebehind

+0

これまで問題が何かを理解しましたか?私は現在、同じ問題に直面しています。 – pikausp

+0

いいえ、私はしませんでした。私はLayoutUpdatedイベントで自分のブーイングを使ってコントロールが最初に描画されたかどうかを確認しました。その場合、私はLoadイベントで行うようなものを初期化します。 – Nasenbaer

+0

その解決策は健康ではありません。この理由は、通常、コンポーネントの初期化中にスローされる例外であり、コントロールがロードされる前に初期化を効果的に停止します。 このような例外は、初期化をtry/catchに入れない限り処理されません。また、例外の後で初期化されるすべてのコントローラが決して完全にロードされないという副作用があることを除けば、デバッガでは気付かないでしょう。したがって、それらのためにロードされたイベントは決して発射されません。例外の初期化コードをすべて確認する必要があります(コードをステップ実行するなど)。 – Henrik

答えて

3

ユーザーコントロールのコンストラクタはまだこのなしで、コールInitializeComponent()を作るん、それはそのビジュアルを構築しませんとLoadedイベント発動しない場合があります。

+0

初期化されます。 – Nasenbaer

+0

これは私の問題でした。念押し有難う。 – KeithS

10

これは、 'Loaded'イベントハンドラで例外がスローされているためです。例外は、混合モードアセンブリまたは「ユーザーが処理した」その他の例外の結果として発生している可能性があります。また、WPFフレームワークがそれをキャッチしています(デバッガには不明です)。これにより、ブレークポイントがLoadedメソッド内で設定されているときにデバッガがブレークしないようにします。

エラーが発生している正確に何を見ることができることを確認する:VS2010で

  1. デバッグに行きます|例外。
  2. あなたのケースで該当する可能性のある例外については、「例外」ラジオボックスをチェックしてください。
  3. アプリケーションを再実行すると、VS2010はイベントハンドラでスローされている例外を突破する必要があります。
  4. 現在知られている例外に従ったデバッグ。
+0

イベントハンドラ「発砲しない」例外を追加する方法は知っていますか? 「追加」オプションは、イベントの準備ができていないか、「System.Windows.Input」に近いものはありません。 – EpiGen

関連する問題