博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WPF中RadioButton的分组
阅读量:6863 次
发布时间:2019-06-26

本文共 4399 字,大约阅读时间需要 14 分钟。

当界面上出现多组Radiobutton时,将所有的Radiobutton写在同一个Grid里面,导致系统认为所有的Radiobutton是同一组,造成选择混乱,解决的方法:

1.要为属于同个组的Radiobutton设置相同的GroupName,绑定同一个变量;

2.若没有为Radiobutton设置GroupName,则将属于同一组的Radiobutton放在一个容器中,如wrappannel里面。

通常为Radiobutton设置转化器,将不同的button上对应的值,与选中与不选中进行转换,下面展示例子,示例中有三种转换器:EnumToBoolConverter,IntToBoolConverter,FloatToBoolConverter。代码如下(示例采用的MVVM模式):

///model中代码

   public enum ProtocolTypeDefine        {            RS232,                        RS485                    }        private ProtocolTypeDefine _protocolType;        private int _dataBits;            private float _stopBits;        ///         /// 协议类型        ///         public ProtocolTypeDefine ProtocolType        {            get            {                return _protocolType;            }            set            {                _protocolType = value;               RaisePropertyChanged( ()=>ProtocolType );            }        }        ///         /// 数据位        ///         public int DataBits        {            get            {                return _dataBits;            }            set            {                _dataBits = value;               RaisePropertyChanged( ()=> DataBits );            }        }        ///         /// 停止位        ///         public float StopBits        {            get            {                return _stopBits;            }            set            {                _stopBits = value;                RaisePropertyChanged( ()=>StopBits );            }        }

 

//view.xaml中代码

//view.cs中的代码

public class EnumToBoolConverter : IValueConverter    {        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)        {            int data = (int)value;            string name = parameter.ToString();            switch (name)            {                case "0":                    return data == 0;                case "1":                    return data == 1;                default:                    return false;            }        }        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)        {            return (ProtocolTypeDefine)int.Parse(parameter.ToString());        }    }    public class IntToBoolConverter : IValueConverter    {        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)        {            int data = (int)value;            string name = parameter.ToString();            switch (name)            {                case "6":                    return data == 6;                case "7":                    return data == 7;                case "8":                    return data == 8;                default:                    return false;            }        }        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)        {            var data = (bool)value;            if (data)            {                return System.Convert.ToInt32(parameter);            }            return -1;        }    }    public class FloatToBoolConverter : IValueConverter    {        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)        {            float data = 0f;            if (!float.TryParse(value.ToString(), out data))            {                return false;            }            string name = parameter.ToString();            switch (name)            {                case "1":                    return data == 1;                case "1.5":                    return data == 1.5;                case "2":                    return data == 2;                default:                    return false;            }        }        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)        {            var data = (bool)value;            if (data)            {                return System.Convert.ToSingle(parameter);            }            return -1;        }    }

 

//model中代码

//协议     SerialSetModel.ProtocolType = 0;    //数据位    SerialSetModel.DataBits = 8;    //停止位    SerialSetModel.StopBits = 1;

 

在此只贴出重要部分代码,使用时只要按照该原理进行组装即可。

 

 

转载于:https://www.cnblogs.com/action98/p/3488103.html

你可能感兴趣的文章
linux 如何降低入向收包软中断占比
查看>>
小知识点(不定更新)
查看>>
css绝对定位中的初始包含块问题
查看>>
智能指针
查看>>
phpcms导航栏多个栏目调用
查看>>
人脸识别 参考 转盒子
查看>>
SDUT OJ 顺序表应用2:多余元素删除之建表算法
查看>>
CSS
查看>>
Android笔记之为TextView设置边框
查看>>
【Lift】Scala Web 框架——Lift(一)准备工作
查看>>
【转载】增强学习(Reinforcement Learning and Control)
查看>>
GNU使用find命令
查看>>
java的执行与加载的过程
查看>>
8.2 sikuli 集成进eclipse 报错:Getting the VisionProxy.dll: Can not find dependent libraries......
查看>>
2.6.1 XML配置:创建XML文件
查看>>
第六天-数据分类型
查看>>
排版类
查看>>
Java中如何遍历Map对象
查看>>
iOS开发的技能树
查看>>
python 装饰器 回顾 及练习
查看>>