在 WPF 中如何控制另一个按钮是否被点击

In WPF how can I control whether another button clicked

我想确定在 WPF 中单击了另一个按钮。 我编写了与下面相同的代码,当我单击该按钮时,动画会在我单击相同按钮时动画工作,就像 else 块一样。但是我想控制是否单击了另一个按钮,而不是我想要 else 块的工作。

int i = 0;
private void btnDashboard_Click(object sender, RoutedEventArgs e)
{
    // btnDashboard.Click += btnDashboard_Click;
    // Button btnSender = (Button)sender;
    if (i%2==0)
    {
        DoubleAnimation anim = new DoubleAnimation(250, 1470, new Duration(TimeSpan.FromMilliseconds(300)));
        btnDashboard.BeginAnimation(FrameworkElement.WidthProperty, anim);
        ((ApplicationShell)App.Current.MainWindow).ShowPages(new UCDashboardIndicatorView());
        i++;
    }
    else
    {
        DoubleAnimation anim = new DoubleAnimation(1470, 250, new Duration(TimeSpan.FromMilliseconds(300)));
        btnDashboard.BeginAnimation(FrameworkElement.WidthProperty, anim);
        base.OnApplyTemplate();
        i++;
    }

}

如何控制它?

只需将您的其他 Button 添加为活动的 订阅者

<Button Click="btnDashboard_Click" ... />
<Button Click="btnDashboard_Click" ... />

并且在您的事件方法中,您可以获取被单击的按钮:

Button btn = sender as Button;

然后,您可以将动画应用到所需的按钮:

btn.BeginAnimation(FrameworkElement.WidthProperty, anim);

注意:以上代码引用了btn,可以是被点击的两个按钮之一

如果您需要更进一步,根据被点击的特定按钮应用动画,您可以给每个按钮一个 Name 并在 [=28] 中测试 btn.Name =]if语句.

如果您想对两个按钮使用相同的点击处理程序,试试这个:

private void btnDashboard_Click(object sender, RoutedEventArgs e)
{
   Button btnSender = sender as Button;
   if(btnSender.Name == "btn1")
    {
      //Code for Button1
    }
    else
    {
      //Code for Button2
    }
}

还要确保每个按钮都在 XAML 中设置了名称 属性,以便您可以在代码隐藏中访问它。 在 XAML:

<Grid>
   <Button Name="btn1" Click="btnDashboard_Click"/>
   <Button Name="btn2" Click="btnDashboard_Click"/>
</Grid>