WPF RadioButton 绑定枚举

摘要:
=空值。等于(真)?parameter:绑定。什么都不做;}}定义ViewModelpublicclassMainViewModel:INotifyPropertyChanged{privateCoordinateEnumtranslateAxis=CoordinateNum.X;publiceventPropertyChangedEventHandlerPropertyChanged;publicCoordinateTumTranslateAxis{get{returntranslateAxis;}设置{if(translateAxis!=值){translateAxis=值;PropertyChanged?

定义枚举类型

  public enum CoordinateEnum
    {
        X=0,Y,Z,RX,RY,RZ
    }

定义枚举转换Convert

public class EnumConvert : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value != null && value.Equals(parameter);
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return value != null && value.Equals(true) ? parameter : Binding.DoNothing;
        }
    }

定义ViewModel

public class MainViewModel : INotifyPropertyChanged
    {
        private CoordinateEnum translateAxis = CoordinateEnum.X;

        public event PropertyChangedEventHandler PropertyChanged;

        public CoordinateEnum TranslateAxis
        {
            get { return translateAxis; }
            set
            {
                if (translateAxis != value)
                {
                    translateAxis = value;
                    PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("TranslateAxis"));
                }
            }
        }
    }

WPF XAML定义

<Window.Resources>
        <local:EnumConvert x:Key="convert" />
    </Window.Resources>
    <Grid>
        <StackPanel>
            <RadioButton Content="X" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.X}}" />
            <RadioButton Content="Y" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.Y}}" />
            <RadioButton Content="Z" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.Z}}" />
            <RadioButton Content="RX" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.RX}}" />
            <RadioButton Content="RY" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.RY}}" />
            <RadioButton Content="RZ" IsChecked="{Binding TranslateAxis, Mode=TwoWay, Converter={StaticResource convert}, ConverterParameter={x:Static local:CoordinateEnum.RZ}}" />
        </StackPanel>
    </Grid>

设置Context

 public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
            this.DataContext = new MainViewModel();
        }
    }

免责声明:文章转载自《WPF RadioButton 绑定枚举》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇ES6 阮一峰阅读学习Java多线程(五):死锁下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF中MVVM模式下的按钮事件实现和依赖项通知

自从上一次写MVVM入门到现在,又过了好长时间了,一直想着把事件的绑定总结一下,但是一来是认识的不够,感觉讲不清楚;二来是懒。不管了,写的不对的地方大家提一下,错误要是不暴露它就一直是错误。先说按钮的事件绑定,.net中提供的ICommand就是这么用的,自己写一个command的基类,继承ICommand,实现ICommand的3个方法,最简单的实现:...

WPF:设置弹出子菜单的是否可用状态及效果

需求: 设置弹出子菜单(二级)项仅首项可用,其他项均不可用;不可用是呈灰色效果。           注:             菜单项都是依据层级数据模板。具体格式如下:                  StackBlock{TextBlock{Image}、TextBlock}} 问题:          1、窗体加载后,获取不到二级子菜单控件(二...

WPF TextBox/TextBlock 文本超出显示时,文本靠右显示

文本框显示 文本框正常显示: 文本框超出区域显示: 实现方案 判断文本框是否超出区域 请见《TextBlock IsTextTrimmed 判断文本是否超出》 设置文本布局显示 1. FlowDirection 当文本超出显示区域时,设置FlowDirection靠右显示 下面是封装的附加属性ScrollEndWhenTextTrimmed 1...

wpf窗口禁止最大化但允许调整大小

wpf中窗口禁止最大化可以通过属性ResizeMode来设置,但是ResizeMode有一个问题就是如果ResizeMode设置为NoResize的话,是可以禁止最大化的,但是这样同时也就不能拖动调整大小了,通过如下方法可以达到这个效果,通过win32 API来设置: 需要用到的API函数: [DllImport("user32.dll", EntryPo...

[WPF](小结1)ListBox嵌套ListBox

思路:大项目的每项中包含一个小项目集合,用ListBox嵌套ListBox或ListBox嵌套ItemsCtrol是个比较好的方式,现总结如下: 第一:先构建题目类,再建一个选项类,题目类集合中的每个项包含一个选项类集合,即数组嵌套数组,C#语句如下: (为方便看清语句,类直接写在主程序中) usingSystem; usingSystem.C...

iOS-@inerface的11条规范写法

总结一些interface声明时的规范,相关宏的介绍,定义方法时有用的修饰符,编写注释的规范,最终写出一个合格的头文件。 1.读写权限 1.1实例变量的@public,@protected,@private关键字 1.2属性的readonly,readwrite关键字 2.前向声明 3.只暴露必要的接口和实现 3.1不要暴露任何只在类内部使用的...