WPF切换按钮使用一个处理程序检查/取消选中事件

时间:2011-10-06 17:05:36

标签: wpf events togglebutton

我在WPF窗口中使用ToggleButton

 <ToggleButton Height="37"
          HorizontalAlignment="Left"
          Margin="485.738,254.419,0,0"
          VerticalAlignment="Top"
          Width="109"
          IsEnabled="True"
          Checked="toggleAPDTimeoutErr_Checked"
          Unchecked="toggleAPDTimeoutErr_Unchecked">Timeout</ToggleButton>

我正在监控两个事件,但这是在处理程序后面的两个不同代码中完成的。怎么能只用一个呢?

我会有很多ToggleButton,代码可能会变大。

3 个答案:

答案 0 :(得分:21)

您可以附加ToggleButton的单击事件,并且在其处理程序中,您可以通过在处理程序中类型转换发件人对象来检查ToggleButton IsChecked属性,如下所示 -

private void ToggleButton_Click(object sender, RoutedEventArgs e)
{
   if((sender as ToggleButton).IsChecked)
   {
      // Code for Checked state
   }
   else
   {
      // Code for Un-Checked state
   }
}

的Xaml:

<ToggleButton Height="37" HorizontalAlignment="Left" Margin="485.738,254.419,0,0"     VerticalAlignment="Top" Width="109" IsEnabled="True" Click="ToggleButton_Click">Timeout</ToggleButton>

答案 1 :(得分:11)

您不应该像某些答案所示使用Click事件,因为当代码或鼠标之外的任何其他事件(键盘,动画......)更改属性IsChecked时,它将无效。这只是一个错误。

相反,您可以对CheckedUnchecked使用相同的处理程序,并根据IsChecked属性执行操作。

<ToggleButton
    Checked="toggleButton_IsCheckedChanged"
    Unchecked="toggleButton_IsCheckedChanged" />

答案 2 :(得分:0)

试试这个

private void tBtn_super_Click(object sender, RoutedEventArgs e)
        {
            if (tBtn_super.IsChecked == true)
            {
                MessageBox.Show("True");
            }
            else
            {
                MessageBox.Show("False");
            }
        }