如何在不触发 Button 单击事件的情况下单击 Button 内容中的 ToggleSwitch 控件

How to Click a ToggleSwitch control inside a Button content without firing the Button click event

我正在处理 WPF 项目并且遇到以下情况:

每当我单击 ToggleSwitch 以更改其状态时,都会触发 Button 单击事件。

我需要一种方法来防止这种情况。

<Button x:Name="btn1" Height="40" BorderThickness="0" Width="auto" HorizontalAlignment="Stretch" Margin="0,0,0,0" Style="{DynamicResource SquareButtonStyle}" Click="Button_Click">
       <Grid Margin="0,0,0,0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
            <Grid.ColumnDefinitions>
                       <ColumnDefinition Width="50" />
                       <ColumnDefinition Width="100" />
                       <ColumnDefinition Width="*" />
                       <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>

            <TextBlock VerticalAlignment="Center" Width="auto" Grid.Column="1">Services</TextBlock>
            <Controls:ToggleSwitch Grid.Column="3" x:Name="enabledSwitch4"
                                    VerticalAlignment="Center"
                                    Width="Auto"
                                    Style="{StaticResource MahApps.Metro.Styles.ToggleSwitch.Win10}"
                                    OnLabel="" OffLabel=""
                                    IsChecked="True" HorizontalAlignment="Center" />
        </Grid>
</Button>

您可以 handle/prevent 在按钮的单击事件中执行此操作。

private async void ButtonClick(object sender, RoutedEventArgs e)
{
    if (e.OriginalSource != sender)
    {
        // do nothing if clicked the ToggleSwitch
        e.Handled = true;
    }
    else
    {
        // handle the button click action
        await this.ShowMessageAsync(string.Empty, "Yeah, you clicked the real button!");
    }
}