WPF中RadioButton组合取消选中

  • Post author:
  • Post category:其他



目的:


RadioButton取消选中,两个RadioButton组合,如果其中一个已经被选中,再次点击则取消选中。


遇到的浅坑:

以下代码为错误,未能实现,无论怎么点击,RadioButton按钮一直选中不了。

if (RB6.IsChecked == true)//如果选中了,再选一次则取消选择
{
    RB6.IsChecked = false;
}


错误原因:


RadioButton只要单击,在执行点击事件之前IsChecked属性状态已经变成true,所以,不能通过判断Checked来设置Chcked自己的值。


解决方法:


在外部加入一个标志值即可,通过外部变量记录Checked上次的值,然后不断的切换状态。


实现:


要点:如果点击当前RaddioButton,则必须对另外一个状态初始化,我在此设置的初始化为两个都是true,外部变量为true时,点击当前RadioButton可为IsChecked。代码如下:

        bool RB6IsChecked = true;//RB6状态,初始状态为true,此状态下点击RB6,可变状态为IsChecked。
        /// <summary> RadioButton 6度带</summary>
        private void RB6_Click(object sender, RoutedEventArgs e)
        {
            if (RB6IsChecked)//如果选中了,再选一次则取消选择
            {
                RB6.IsChecked = true;
                RB6IsChecked = false;
                RB3IsChecked = true;//将RB3状态初始化
            }
            else
            {
                RB6IsChecked = true;
                RB6.IsChecked = false;
                RB3IsChecked = true;//将RB3状态初始化
            }
        }

        bool RB3IsChecked = true;//RB3状态,初始状态为true,此状态下点击RB3,可变状态为IsChecked。
        /// <summary> RadioButton 3度带</summary>
        private void RB3_Click(object sender, RoutedEventArgs e)
        {
            if (RB3IsChecked)//如果选中了,再选一次则取消选择
            {
                RB3.IsChecked = true;
                RB3IsChecked = false;
                RB6IsChecked = true;//将RB6状态初始化
            }
            else
            {
                RB3IsChecked = true;
                RB3.IsChecked = false;
                RB6IsChecked = true;//将RB6状态初始化
            }
        }



版权声明:本文为du12300原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。