Я узнал о маршрутизируемых событиях в wpf и попробовал следующий пример:
Файл -- Window1.xaml
<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). Можете ли вы помочь мне с этим?
Обновлять:
Этот фрагмент, кажется, работает, если я заменю кнопку эллипсом. Почему кнопка не может реагировать на левые клики, когда эллипс может. Также события не возникают, если я нажимаю на один и тот же эллипс более одного раза.