2016-04-22 7 views
0

私は、ユーザーがグラフィカルレイヤーとテキストレイヤーを追加して操作できるコントロールを持っています。各層は、親コントロールのキャンバスに追加される各ユーザーコントロールです。私は、親コントロールのLayoutUpdatedイベントを使用して、トランスフォームの特定の変数などを更新します。ハンドラメソッドを変更しないと、LayoutUpdateイベントが発生しなくなりました。私は明らかにそれを引き起こした何かをしたことがありますが、私はこの新しい問題に論理的に結びついていることで何も修正していません。どんなアイデアも感謝しています。 ちょっと分かり易い:私は解決策を求めているわけではありません。似たような経験の逸話です。想像以上に役立つかもしれません。ありがとうございましたLayoutUpdatedイベントの発生が停止しました。ハンドラは、任意のアイデアの場所にありますか?

+0

私たちはあなたが関連コードを見ていないかもしれないか何かを知りません。 –

+0

以前に経験したことがある人がいるのだろうか? – RLB

答えて

0

原因は、この場合、依存関係プロパティ値を設定せずにキャンバス内のデザイン時にxamlで定義されたWPF UserControl(子)でした。キャンバスは別のタイプの別のユーザーコントロール(ママ)内にあります。実行時に、ママがインスタンス化され、子供のサイズ、配置、およびママのキャンバス内での可視化が行われます。ママのランタイムサイズと、子供が表示されるかどうかを示す引数を指定します。この子供のインスタンスは、表示されるように要求されている場合は、サイズが決められ、配置されている場合のみ表示され、表示されない場合は、非表示になります(サイズは指定されず、配置されません)。
ママのキャンバス内にインスタンス化されていますが、サイズが不明で配置されていない要素が存在するため、レイアウト更新イベントの失敗が発生していました。この状況は問題のインスタンスだけでなく、後でプロジェクトで実行時に作成された他のすべてのインスタンスにも影響を与えました。 (注 - 例外は発生していません)

この状況に適したソリューションは、明示的にサイズを変更し、この要素をキャンバス内に配置することでした。レイアウト更新されたイベントは、期待どおりに起動します。私はより深く一般的な答えを提供したいと思っていますが、賢明な人々にもその洞察を含めることができます。ありがとう

関連する問題