5

これは、対話型要素内の対話型要素の古くからの問題ですが、ScatterViewItem に、SurfaceButton や SurfaceCheckBox などの他の表面対話型要素を含めたいと考えています。そこにすべての要素があり、タップなどに反応します。問題は、コントロールを含まない領域をクリックすると、通常の ScatterView の動作しか得られないことです。

連絡先が SurfaceButton または SurfaceCheckbox にある場合でもドラッグできるエレガントなソリューションはありますか?

例えば

<s:ScatterView >    
    <Grid Width="200" Height="200">
        <s:SurfaceButton />
    </Grid>
</s:ScatterView>
4

3 に答える 3

1

サーフェス コミュニティ フォーラムで同じ質問をしたところ、これはすべての WPF コントロールの動作と一致しているという回答がありました。たとえば、インタラクティブな要素をリスト ボックスに追加した場合、ListBox はマウスがボタンの上にあるときにインタラクションに反応しません。

他の誰かがこの問題に遭遇した場合は、この動作を一緒にハックしようとするよりも、コントロールの設計を通じてこの問題を解決するのがおそらく最善です。コントロールの動作は、アプリ間およびコントロール間で一貫性を保つ必要があります。

于 2009-06-16T07:55:01.633 に答える
0

この問題を解決するには、プレビュー イベントと非プレビュー イベントを区別することが重要です。

http://eightyeightpercentnerd.blogspot.com/2008/06/wpf-preview-vs-non-preview-events.html

そのため、聞きたいイベントを決めることができます。

ただし、一般的なアドバイスとして、これ以上ルーティングしない場合は、イベントの Handled フラグを true に設定することを常にお勧めします。

于 2010-12-23T17:00:52.563 に答える
0

子コントロールの 1 つで ContactLeave イベントをリッスンし、その中で contact.Capture( scatterviewitem) を呼び出すことで、この動作を「ハック」できます。これにより、svi は連絡先のリッスンと応答を引き継ぐように指示されます。ただし、Surface の他の部分と一貫性のない動作が発生し、混乱を招く可能性がありますそれ自体にも一貫性がありません...これにより、指を離さずに内部コントロールからSVIに切り替えることができますが、ユーザーは指を離して内部コントロールに戻す必要があります。

于 2010-12-23T16:37:16.507 に答える