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-08-04 23:38:55

WPF RadioButton 转换的相关文章

WPF值转换实例

WPF绑定功能非常方便,有时候点击某值时在另t一处显示此值的另一表现形式或调用其对应的其它值,用WPF值转换功能会很方便,下面就一LISTBOX和TEXTBLOCK控件,把LISTBOX中的值转换成除以1000后的结果显示在TextBlock中 1.值转换类: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Data; namesp

WPF 颜色转换

原文:WPF 颜色转换 从字符串到画刷: var converter = new System.Windows.Media.BrushConverter(); var brush = (Brush)converter.ConvertFromString("#FFFFFF90"); Fill = brush; 原文地址:https://www.cnblogs.com/lonelyxmas/p/9559548.html

WPF 变量转换的实现

有时候,我们传入的是一个值,但是真正显示的需要是另一个值,这时候就需要转换.比如我们传入一个枚举值,而不同的枚举值对于的图片是不一样的. 这时候就需要一个转换规则.WPF里面给我们提供了一个接口IValueConverter.我们可以自己新建一个类继承该接口,然后写自己的转换规则. 我们新建一个类: class ChangeValueToResult : IValueConverter { public object Convert(object value, Type targetType,

WPF RadioButton &amp; CheckBox Style

<Style TargetType="CheckBox"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="CheckBox"> <Border x:Name="bd" BorderBrush="Gray" BorderThickness="1&q

Strange RadioButton group behavior with ToolBar

原文地址:https://social.msdn.microsoft.com/Forums/vstudio/zh-CN/83352293-ca52-4e22-8092-8e23c453bc75/strange-radiobutton-group-behavior-with-toolbar?forum=wpf RadioButton's grouping implementation doesn't take into the consideration the scenario in which

WPF(1)开始教程[译]

概要 在我使用了半年多 WPF 后,是时候写点关于 WPF 基础方面的东西了.我发表了一系列针对具体问题的文章.现在是到了让大家明白为什么说WPF是一款在界面开发上带来革命的产品了. 本文针对初级-中级程序员,所以我尽量给出一些基础的示例. WPF 介绍 就像名字表示的那样(WPF:Windows Presentation Foundation 直译为 Windows 图像基础),WPF是在 .NET Framework 3.0 引进的一个新框架,包含了很多可以更快速和方便地编写程序的类库.它使

【WPF学习】第十七章 鼠标输入

鼠标事件执行几个关联的任务.当鼠标移到某个元素上时,可通过最基本的鼠标事件进行响应.这些事件是MouseEnter(当鼠标指针移到元素上时引发该事件)和MouseLeave(当鼠标指针离开元素时引发该事件).这两个事件都是直接事件,这意味着他们不使用冒泡和隧道过程,而是源自一个元素并且只被该元素引发.考虑到控件嵌入到WPF窗口的方式,这是合理的. 例如,如果有一个包含按钮的StackPanel面板,并将鼠标指针移到按钮上,那么首先会为这个StackPanel引发MouseEnter事件(当鼠标指

使用 Async 和 Await 的异步编程(C# 和 Visual Basic)[msdn.microsoft.com]

看到Microsoft官方一篇关于异步编程的文章,感觉挺好,不敢独享,分享给大家. 原文地址:https://msdn.microsoft.com/zh-cn/library/hh191443.aspx 通过使用异步编程,你可以避免性能瓶颈并增强应用程序的总体响应能力. 但是,编写异步应用程序的传统技术可能比较复杂,使它们难以编写.调试和维护. Visual Studio 2012 引入了一个简化的方法(即异步编程),该方法利用 .NET Framework 4.5 和 Windows 运行时中

ArcGIS中的 .tpk数据

转:http://blog.csdn.net/mytudousi/article/details/33347249 什么是tpk文件 tpk是ArcGIS10.1推出的一种新的数据文件类型,主要是用于将切片文件打包形成离线地图包,tpk可以在ArcGIS Runtime或者ArcGIS for Android/iOS中作为切片底图被加载. 为什么要存在tpk文件 为什么要存在tpk文件,这个要从需求说起.例如我们要做一个ArcGIS for Android/iOS应用,现在手机的流量还是不便宜的