WPF RadioButton 转换

模型

public class people
{
   public string name{get;set;}
   public bool? sex{get;set;}
}

转换器

namespace Helper
{
    public class StringRadioConvert : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null || parameter == null)
                return false;
            string checkvalue = value.ToString();
            string targetvalue = parameter.ToString();
            bool r = checkvalue.Equals(targetvalue, StringComparison.InvariantCultureIgnoreCase);
            return r;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null || parameter == null)
                return null;
            bool usevalue = (bool)value;
            if (usevalue)
                return parameter.ToString();
            return null;
        }
    }
    /// <summary>
    /// BOOL TO BOOL
    /// </summary>
    public class BoolRadioConvert : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            if (value == null || parameter == null)
                return false;

            bool flag = (bool)value;

            if ((flag && (string)parameter == "男") || (!flag && (string)parameter == "女"))
            {
                return true;
            }

            return false;
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            if (value == null || parameter == null)
                return null;
            bool usevalue = (bool)value;
            if (!usevalue)
                return null;
            Dictionary<string, bool> dict = new Dictionary<string, bool>();
            dict.Add("男", true);
            dict.Add("女", false);

            return dict[parameter.ToString()];
        }
    }

}

VIEW

<UserControl ......
             xmlns:helper="clr-namespace:Helper"......>
    <UserControl.Resources>
        <helper:StringRadioConvert x:Key="radioStringConverter" />
        <helper:BoolRadioConvert x:Key="radioBoolConverter" />
   </UserControl.Resources>
 <Label VerticalAlignment="Center" HorizontalAlignment="Right" FontWeight="ExtraBlack">用户:</Label>
                    <RadioButton Content="小陈" GroupName="SeatGroup" IsChecked="{Binding people.name, Converter={StaticResource radioStringConverter}, ConverterParameter='小陈'}"></RadioButton>
                    <RadioButton Content="小李" GroupName="SeatGroup" IsChecked="{Binding people.name, Converter={StaticResource radioStringConverter}, ConverterParameter='小李'}" ></RadioButton>
 <Label VerticalAlignment="Center" HorizontalAlignment="Right" FontWeight="ExtraBlack">输血史:</Label>
                    <RadioButton Margin="4 0" GroupName="TransfusionGroup" IsChecked="{Binding people.sex , Converter={StaticResource radioBoolConverter}, ConverterParameter='男'}">男</RadioButton>
                    <RadioButton Margin="4 0" GroupName="TransfusionGroup" IsChecked="{Binding people.sex , Converter={StaticResource radioBoolConverter}, ConverterParameter='女'}">女</RadioButton>

</UserControl>

 

解析:

name为string类型,转化为bool

sex需定义为bool?类型,否则会出现红框提示,此外,IsChecked是无法直接绑定变量的

 

时间: 2024-11-06 07:25:15

WPF RadioButton 转换的相关文章

[WPF]RadioButton在Group的Header区部分不响应鼠标选择的bug分析

昨晚看到南柯之石的WPF BUG之四:点击RadioButton的空白没有反应,就做了简单的验证,之后发表了一些分析和看法, 但是那个分析不够准确和充分,会误导别人的想法.在此表示歉意.这里我会从头做分析. 由于南柯之石已经描述过bug,这里只是简单说一下:就是在GroupBox的Header上放一个RadioButton,此时鼠标点击RadioButton的某些空白区域没有反应. 下面言归正传,开始对这个bug的探索: 首先这里给出出现bug的xaml片段(这个从南柯之石的blog转帖过来的,

WPF常用转换

原文 WPF常用转换 以下是代码中常常用到的一些转换,整理如下,后续再不断完善: 1.string和Color的转换 //string转Color (Color)ColorConverter.ConvertFromString((string)str);   //Color转string ((Color)value).ToString();   2.string和Brush的转换 //string转Brush Brush color = new SolidColorBrush((Color)Co

WPF Bug清单之(4)——点击RadioButton的空白没有反应

在WPF BUG清单之二,介绍过RadioButton在绑定上的一个Bug.现在再来介绍它的另一个造成RadioButton的点击事件处理不正确的BUG.现象是:点在RadioButton的范围内,可这个RadioButton就是选不中. 先来看一个例子.Windows里一个常见的对话框,用了多个RadioButton.如下图所示. 图1.RadioButton使用范例 把RadioButton放在GroupBox的Header上,是很常见的一个用例,而且被微软的UX Guide所认可. 大家可

Android控件之CheckBox、RadioButton用法实例分析_Android

本文实例讲述了Android控件之CheckBox.RadioButton用法.分享给大家供大家参考.具体如下: CheckBox和RadioButton控件都只有选中和未选中状态,不同的是RadioButton是单选按钮,需要编制到一个RadioGroup中,同一时刻一个RadioGroup中只能有一个按钮处于选中状态. 以下为CheckBox和RadioButton常用方法及说明 以下为单选按钮和复选按钮的使用方法 目录结构: main.xml布局文件: <?xml version="

Android编程之Button控件用法实例分析_Android

本文实例讲述了Android编程之Button控件用法.分享给大家供大家参考,具体如下: 一.Button概述 android.widget.Button直接继承于android.wdiget.TextView. 直接子类有:CompoundButton. 间接子类有:CheckBox,RadioButton,Switch,ToggleButton. Button类表示一个"按钮"控件."按钮"控件可以被用户按下或者点击,来触发另一个操作. 二.Button的用法

MFC中Radio Button的用法详解_C 语言

本文通过针对两个常见问题的解决方案,详细阐述了MFC中Radio Button的用法.有助于读者加深对于MFC运行机制及Radio Button控件用法的理解. 首先为对话框加上2个radio button,分别是Radio1和Radio2. 问题1:如何让Radio1或者Radio2默认选上?如何知道哪个被选上了? 关键是选上,"默认"只要放在OnInitDialog()即可.有如下的三种方法可以让它选上: 第一种: ((CButton *)GetDlgItem(IDC_RADIO1

VC++中HTControl的CHTButton按钮控件类用法实例解析_C 语言

本文以实例形式讲解了VC++中HTControl控件类的CHTButton按钮控件类用法,相信对大家更好的理解VC++有一定的帮助.具体内容如下: 一般了解VC++的朋友都知道,VC++ 按钮控件CHTButton隶属HTControl控件组,直接由WIN32 API实现,你可以在SDK,MFC,wxWidget等环境下使用它.支持生成各种类型的按钮,比如:普通按钮,PNG透明按钮,复选框按钮,单选按钮等.使用时请注意,窗体必须动态创建,代码段如下: m_HTBtnClose.Create(75

代码-wpf的一条关于RadioButton的问题

问题描述 wpf的一条关于RadioButton的问题 人员1人员2人员3 string s1; private void Group_Checked(object sender,RoutedEventArgs e) { RadioButton r=e.Source as RadioButton; if(r.IsChecked==true) s1.r.Content.ToString(); } 对于这段代码,我有好几个问题想问: 1.RadioButton.Checked这里,没有指定是哪个Ra

WPF Bug清单之(2)——RadioButton的IsChecked绑定失效

.NET Framework已经算是一个很易用的库了.可以自动地为我们做很多事情,而且大都做得还不错.但是自动完成的事情很可能会有隐患,因为Framework本身是并不了解业务逻辑的.它自动完成的事情,可能会给我们帮倒忙. RadioButton就是其中一个. 先来从设置值的角度介绍一下WPF里的Dependency Property(以下简称DP).在WPF里控制一个控件的DP,有太多的方式.可以用Style,可以用Animation,可以用Data Binding,可以用Trigger,还有