2

そのため、イベントを持つ基本的なキャンバスを作成しました。しかし、このコードを実行すると、イベントが実際にヒットすることはありません。メトロアプリ用にC#で書いています。私は何を間違えましたか?

<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
    <Canvas HorizontalAlignment="Left" Height="673" VerticalAlignment="Top" Width="1346" Margin="10,85,0,0" PointerMoved="Canvas_PointerMoved"/>
</Grid>

Heres私のC#コード

    public MainPage()
    {
        this.InitializeComponent();
    }

    /// <summary>
    /// Invoked when this page is about to be displayed in a Frame.
    /// </summary>
    /// <param name="e">Event data that describes how this page was reached.  The Parameter
    /// property is typically used to configure the page.</param>
    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
    }

    private void Canvas_PointerMoved(object sender, PointerRoutedEventArgs e)
    {
        Debug.WriteLine("hit");
    }
4

1 に答える 1

5

Canvases の紛らわしい癖を発見しました。ヒット テストを行うには、背景色を設定する必要があります。

たとえば、コードを次のように変更すると、イベントが発生します。

<Grid>
    <Canvas Background="Blue" HorizontalAlignment="Left" Height="673" VerticalAlignment="Top" Width="1346" Margin="10,85,0,0" PointerMove="Canvas_PointerMoved"/>
</Grid>

ただし、キャンバスが適切な種類のパネルであるかどうかを考慮する必要があります。これは非常に原始的であり、レイアウトを厳密に定義する必要があるか、パフォーマンスのためにマイクロ最適化を行っている場合を除き、通常は使用されません。

于 2013-07-11T20:04:04.237 に答える