2009-06-03 11 views
0

に動作していない - Window1.xamlLeftMouseButtonDownは、私はWPFのルーティングイベントについて学んでいたと私は、次の例をしようと、</p> <p>ファイルルーティングイベントにボタンで

<ScrollViewer VerticalScrollBarVisibility="Auto"> 
    <UniformGrid MouseDown="UniformGrid_MouseDown"> 
     <Button x:Name="Button1">1</Button> 
     <Button x:Name="Button2">2</Button> 
     <Button x:Name="Button3">3</Button> 
     <Button x:Name="Button4">4</Button> 
     <Button x:Name="Button5">5</Button> 
     <Button x:Name="Button6">6</Button> 
     <Button x:Name="Button7">7</Button> 
     <Button x:Name="Button8">8</Button> 
     <Button x:Name="Button9">9</Button> 
    </UniformGrid> 
</ScrollViewer> 

ファイル - Window1.xaml私はこれらのスニペットを実行したときには.cs

private void UniformGrid_MouseDown(object sender, MouseButtonEventArgs e) 
{ 
    Button aTargetButton = e.Source as Button; 
    if (aTargetButton != null) 
    { 
     aTargetButton.Background = Brushes.Azure; 
     aTargetButton.LayoutTransform = new RotateTransform(45); 
     if (myPreviouslyClickedButton != null) 
     { 
      myPreviouslyClickedButton.Background = Brushes.White; 
      myPreviouslyClickedButton.LayoutTransform = new RotateTransform(0); 
     } 
     myPreviouslyClickedButton = aTargetButton; 
    } 
} 

、対応するボタンは、私は(私はMouseDownイベントのために加入しているにもかかわらず)その上で右クリックを行うだけ角度変換を受けます。これで私を助けてくれますか?

更新:

このコードは、私は楕円形で、ボタンを置き換える場合は動作するようです。楕円ができるときにボタンが左クリックに反応しないのはなぜですか?同じ楕円をもう一度クリックするとイベントが発生しません

答えて

0

これは正しく動作しています。内部的には、ButtonMouseDownイベントを処理して、いつClickイベントを発生させるかを知ることができます。私はSnoopがWPFイベントの問題を追跡したり、動作の仕方をより深く理解するための素晴らしいツールであることを発見しました。

1

マウスダウンイベントがボタンによって処理されています。

あなたのグリッドは、ボタンイベントを処理したい場合は、あなたが何かするかもしれない:

<ScrollViewer VerticalScrollBarVisibility="Auto"> 
    <UniformGrid Button.Click="UniformGrid_Click"> 
     <Button x:Name="Button1" Margin="10">1</Button> 
     <Button x:Name="Button2">2</Button> 
     <Button x:Name="Button3">3</Button> 
     <Button x:Name="Button4">4</Button> 
     <Button x:Name="Button5">5</Button> 
     <Button x:Name="Button6">6</Button> 
     <Button x:Name="Button7">7</Button> 
     <Button x:Name="Button8">8</Button> 
     <Button x:Name="Button9">9</Button> 
    </UniformGrid> 
    </ScrollViewer> 

をし、のようなものにソースを変更します。

private void UniformGrid_Click(object sender, RoutedEventArgs e) 
    { 
     // Your code here 
    } 

MSDNの記事hereがあります読書の価値があるでしょう。