私はSharpDXのサンプルプログラム(http://sharpdxwpf.codeplex.com/SourceControl/latest#SharpDX.WPF.sln)を使って勉強しようとしています...それは4つの異なるアプローチを使って4つの影付き三角形の象限を作成し、それ自体がグラフィックスを再描画するだけです。私はイベントハンドラでブレークポイントを連続して打つため(下記参照)、これらのイベントをトリガするのはわかりません。 XAMLにはそれがあります。 。 。このWPFプログラムでイベントトリガを理解する必要があります。 。
xmlns:dxc="clr-namespace:SharpDX.WPF;assembly=SharpDX.WPF"
。 。 。
<dxc:DXElement Grid.Column="0" Grid.Row="0" x:Name="dxview10"/>
<Image Grid.Column="1" Grid.Row="0" x:Name="img"/>
<dxc:DXElement Grid.Column="0" Grid.Row="1" x:Name="dxview11"/>
<dxc:DXElement Grid.Column="1" Grid.Row="1" x:Name="dxview2d"/>
。 。 。 DXElementの宣言とコンストラクタは次のようになります 。 。 。
残りのDXElementは簡単なイベントハンドラです。ここに1つの例があります:
protected override void OnRender(DrawingContext dc)
{
dc.DrawImage(Surface, new Rect(RenderSize));
}
「オーバーライド」に注意してください。私は、DXElement(FrameworkElementまたはINotifyPropertyChanged)の親クラスの1つが既にこれらのイベントをリスンしていると仮定しています。しかし、はこれらのイベントを引き起こしますか? (例えば、OnRender(),OnLoopRendering()など)これらは、プログラムを実行するエンジンのようです。このようなイベントがWPFプログラムで発生する原因を追跡するにはどうすればよいですか?私はそれらにブレークポイントを設定した場合 は、私は彼らがヒットの取得を参照してください、しかし、彼らは(System.Windows.Media例えば、
SharpDX.WPF.dll!SharpDX.WPF.DXElement.OnRender、framweworkから呼び出されています.DrawingContext DC)ライン153のC# PresentationCore.dll!System.Windows.UIElement.Arrange(System.Windows.Rect finalRect)不明 PresentationFramework.dll!System.Windows.Controls.Grid.ArrangeOverride(System.Windows.Size arrangeSize)不明 PresentationFramework.dll!System.Windows.FrameworkElement.ArrangeCore(System.Windows.Rect finalRect)不明 PresentationCore.dll !System.Windows.UIElement.Arrange(System.Windows.Rect finalRect)不明 PresentationFramework.dll!MS.Internal.Helper.ArrangeElementWithSingleChild(System.Windows.UIElement 要素、System.Windows.Size arrangeSize)不明 PresentationFramework。
未知のdll!System.Windows.Controls.ContentPresenter.ArrangeOverride(System.Windows.Size arrangeSize)...ので、私はプログラムは、これらのイベントを実現するためにやっていることを理解していません。私はそれをどのように把握するのですか?
私は "InvalidateVisual"のソリューション全体でファイル内検索を行い、0ヒットを得ました。したがって、プログラムから間接的に呼び出されるフレームワーク内の何かから呼び出されない限り、そうではないようです。これがWPFプログラムのイベントを追跡し、何が起きているのかを確認する方法を探している理由です。それ、どうやったら出来るの? – user316117
https://snoopwpf.codeplex.com/を使用できますが、そのような低レベルのイベントは返されません。おそらくXAMLSpy(未テスト)です。 Reshaperをお持ちの場合は、Shift + F12キーを使用してそのメソッドの用途を見つけることができます。 – Aybe
私はXAMLSpyを試しましたが、私のプログラムを見つけることができませんでした。私はResharperを持っていない(私はそれがあなたが "Reshaper"の意味であったと仮定します) – user316117