2

プレビュー/トンネリングを使用してイベントをリッスンする必要があるカスタムSilverlightUserControlを構築していますが、何らかの理由で、コンパイラーはイベントが認識されないかアクセスできないと言っています。

たとえば、にイベントハンドラを追加することはできますが、に追加することはできMouseLeftButtonDownませんPreviewMouseLeftButtonDownMicrosoft( http://msdn.microsoft.com/en-us/library/system.windows.uielement_members (v=VS.100 ).aspx)によると、すべてのUIElementsにプレビューイベントを添付する必要があるため、これは意味がありません。

なぜこれが起こっているのかについてのアイデアはありますか?違いが生じる場合は、Visual Studio 2010 Trial、Blend 4 RC、および.Net4を使用しています。

4

2 に答える 2

3

Silverlight は、いくつかのコア イベントを除いて、プレビュー イベントやルーティング イベント (バブリング/トンネリング) をサポートしていません。

WPF と Silverlight の両方で動作するコントロールを作成しようとしている場合は、別のアプローチを取る必要があります。何をしようとしているのかによっては、コードでハンドラーを装備し、イベントも処理するように指定することで、目的を達成できる場合があります。

// the last parameter indicates we want to receive events that
// were marked as e.Handled = true by other listeners
// this type of event handler can only be done in code
myUserControl.AddHandler(
    UIElement.MouseLeftButtonDownEvent,
    OnMouseLeftButtonDown,
    true
);
于 2010-04-27T16:52:26.127 に答える
1

Silverlight ではなく、WPF のヘルプを見ています。Silverlight は (ほとんど) WPF のサブセットであり、多くの機能がありません。

これらのイベントは Silverlight には存在しないため、 Silverlight UIElement ヘルプにはこれらのイベントは表示されません。

于 2010-04-27T16:46:54.073 に答える