Events 如何单击按钮内容中的ToggleSwitch控件而不触发Button Click事件

Events 如何单击按钮内容中的ToggleSwitch控件而不触发Button Click事件,events,wpf-controls,togglebutton,mahapps.metro,Events,Wpf Controls,Togglebutton,Mahapps.metro,我正在从事WPF项目,我有以下场景: 我正在使用MahApps.Metro来设计我的应用程序 我有一个按钮可以导航到某个页面 该按钮的内容中有一个ToggleSwitch控件 每当我单击ToggleSwitch以更改其状态时,按钮click事件就会触发 我需要一种方法来防止这种情况 <Button x:Name="btn1" Height="40" BorderThickness="0" Width="auto" HorizontalAlignment="Stretch" Margin

我正在从事WPF项目,我有以下场景:

  • 我正在使用MahApps.Metro来设计我的应用程序
  • 我有一个按钮可以导航到某个页面
  • 该按钮的内容中有一个ToggleSwitch控件
每当我单击ToggleSwitch以更改其状态时,按钮click事件就会触发

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

<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>


服务

您可以在按钮的单击事件中处理/阻止此操作

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!");
    }
}

为什么在按钮内容中需要此开关?我正在进行的项目设计需要此开关。基本上,有一个导航侧栏,用户可以选择打开/关闭他现在所在的任何页面上的某些服务。那么您想使用切换按钮启用/禁用按钮单击操作吗?或者,在按钮和切换开关的单击事件中,您会做什么?有一个ContentControl,侧栏中的每个按钮都会使用特定的UserControl更改ContentControl的内容。切换开关用于打开/关闭某些后台服务。我需要的是允许单击切换开关来控制后台服务,而无需执行(父)按钮单击事件。当我现在单击ToggleSwitch时,按钮单击事件将激发,因为它是父级。