首页 > 解决方案 > uwp:如何将按钮单击事件传递给默认处理程序

问题描述

我想处理 Button Click 事件,做一些事情,然后让默认处理程序执行。

这是我所拥有的:

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

这是我的处理程序

void onMoreClicked (object sender, RoutedEventArgs e)
{
  ... do something ...
  ... continue with default button handler ...
}

编辑:

该按钮激活一个弹出,因此它已经有一个处理程序来执行此操作,我想确保该处理程序被执行。

编辑 2:我的示例代码太少了。看到这个,而不是:

<Button ... Click="onMoreClicked">
  <Button.Flyout > 
   ...
  </Button.Flyout>
</Button>

public void onMoreClicked (object sender, RoutedEventArgs e)
{
  ... do something ...
  ... call default handler to show flyout ...
}

标签: buttonuwpevent-handling

解决方案


在显示Click之前调用事件处理程序Flyout

因此,例如,您可以更改Background事件Button处理程序中的 :

private void onMoreClicked(object sender, RoutedEventArgs e)
{
    Button button = (Button)sender;
    button.Background = new SolidColorBrush(Colors.AliceBlue);
}

...并且仍然看到Flyout

在此处输入图像描述

您还可以处理OpenedOpeningClosedClosing事件MenuFlyout

或者使用 anAttachedFlyout并使用以下方法以编程方式显示它ShowAttachedFlyout

private void Button_Click(object sender, RoutedEventArgs e)
{
    Button button = (Button)sender;
    //...
    Flyout.ShowAttachedFlyout(button);
}

XAML:

<Button Content="Button With Flyout" Click="Button_Click">
    <FlyoutBase.AttachedFlyout>
        <MenuFlyout>
            <MenuFlyoutItem Text="Edit" />
        </MenuFlyout>
    </FlyoutBase.AttachedFlyout>
</Button>

推荐阅读