最简单的WPF的ComboBox显示多语言的Enum

<UserControl.Resources>

<converters:AllParitiesToStringListConverter x:Key="AllParitiesToStringListConverter"/>
<converters:ParityToStringConverter x:Key="ParityToStringConverter"/>

</UserControl.Resources>

<StackPanel>
<Label Content="校验位" />
<ComboBox ItemsSource="{Binding AllParities, Converter={StaticResource AllParitiesToStringListConverter}}"
SelectedItem="{Binding PcComViewModel.Parity, Mode=TwoWay, Converter={StaticResource ParityToStringConverter}}">
</ComboBox>
</StackPanel>

[ValueConversion(typeof(Parity), typeof(string))]
public class ParityToStringConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Parity parity = (Parity)value;

if (CultureInfo.CurrentCulture.Name == "en-US")
{
if (parity == Parity.Odd)
{
return "Odd";
}
else if (parity == Parity.Even)
{
return "Even";
}
else
{
return "None";
}
}
else
{
if (parity == Parity.Odd)
{
return "奇";
}
else if (parity == Parity.Even)
{
return "偶";
}
else
{
return "无";
}
}
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
string parity = (string)value;

if (CultureInfo.CurrentCulture.Name == "en-US")
{
if (parity == "Odd")
{
return Parity.Odd;
}
else if (parity == "Even")
{
return Parity.Even;
}
else
{
return Parity.None;
}
}
else
{
if (parity == "奇")
{
return Parity.Odd;
}
else if (parity == "偶")
{
return Parity.Even;
}
else
{
return Parity.None;
}
}
}
}

public class AllParitiesToStringListConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
List<Parity> enums = value as List<Parity>;
List<string> result = new List<string>();

if (CultureInfo.CurrentCulture.Name == "en-US")
{
foreach (var item in enums)
{
switch (item)
{
case Parity.Odd:
result.Add("Odd");
break;
case Parity.Even:
result.Add("Even");
break;
case Parity.None:
result.Add("None");
break;
}
}
}
else
{
foreach (var item in enums)
{
switch (item)
{
case Parity.Odd:
result.Add("奇");
break;
case Parity.Even:
result.Add("偶");
break;
case Parity.None:
result.Add("无");
break;
}
}
}

return result;
}

public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotSupportedException("The method or operation is not implemented.");
}
}

时间: 2024-07-30 20:24:53

最简单的WPF的ComboBox显示多语言的Enum的相关文章

WPF的ComboBox 数据模板自定义

WPF的ComboBox 有些时候不能满足用户需求,需要对数据内容和样式进行自定义,下面就简要介绍一下用数据模板(DataTemplate)的方式对ComboBox 内容进行定制: 原型设计如下: 步骤: 1.新建一个WPF应用程序WpfAppDemo(VS2012),并新建一个images文件夹(上传图片素材); 2.在主界面MainWindow.xaml文件中添加一个Label.ComboBox 和Button控件,如下图: 代码如下: 1 <Window x:Class="WpfAp

(WPF) MVVM: ComboBox Binding

基本思路还是在View的Xmal里面绑定ViewModel的属性,虽然在View的后台代码中也可以实现binding,但是还是在Xmal里面相对的代码量要少一些. 此例子要实现的效果就是将一个List<Customer> 绑定到一个ComboBox,并将选择后的Customer的Age显示在一个TextBlock中. 1. Model public class Customer { public string Name { get; set; } public int Age { get; s

wpf 窗体中显示当前系统时间

先看一下效果: 这其实是我放置了两个TextBlock,上面显示当前的日期,下面显示时间. 接下来展示一下代码: 在XAML中: <StackPanel Width="205"                    Margin="0,0,57,0"                    HorizontalAlignment="Right">            <TextBlock Height="Auto&qu

简单实现Tabbar的隐藏显示动画 By H罗

简单实现Tabbar的隐藏显示动画 Hide Tabbar Controller with Animation - (void)setTabBarVisible:(BOOL)visible animated:(BOOL)animated { // bail if the current state matches the desired state if ([self tabBarIsVisible] == visible) return; // get a frame calculation

WPF中ComboBox用法

The ComboBox control is in many ways like the ListBox control, but takes up a lot less space, because the list of items is hidden when not needed. The ComboBox control is used many places in Windows, but to make sure that everyone knows how it looks

WPF 文字换行TextWrapping 显示不全用省略号TextTrimming 显示不全弹提示内容ToolTip

原文:WPF 文字换行TextWrapping 显示不全用省略号TextTrimming 显示不全弹提示内容ToolTip [TextBlock] 换行? ? TextWrapping="Wrap" 内容显示不全时显示省略号,如 "AAA..."? ??TextTrimming="CharacterEllipsis" //以单词边界做截断 鼠标提示? ?<ToolTip> ? 例:?? TextBlock不允许换行,超出后显示省略号截

WPF DatePicker默认显示当前日期,格式化为年月日(转)

WPF DatePicker默认显示当前日期,格式化为年月日 2018年08月08日 11:23:00 weixin_33922670 阅读数:253 原文:WPF DatePicker默认显示当前日期 WPF的日历选择控件默认为当前日期,共有两种方法,一种静态,一种动态. 静态的当然写在DatePicker控件的属性里了,动态的写在对应的cs文件里,具体请看下面. 1.方法一: myDatePicker.Text = DateTime.Today.ToLongDateString(); 2.方

WPF使用X:Static做多语言支持

原文:WPF使用X:Static做多语言支持 让程序支持多语言,一般把需要显示的字符串保存在一个资源类的static属性中. <!--[if !supportLists]--> <!--[endif]--> 微软的WPF程序多语言支持官方解决方案:使用Resource,并把Resource按语言编译成独立DLL,程序会根据系统当前语言设置,自动加载最合适的资源.(这种方法灵活性较差,而且不能满足多样的需求,于是网上各种多语言方案纷至沓来.)这里有一篇对官方方案的进一步解释. 使用X

YL-236 LCD12864汉字显示C语言编程

sfr P0=0x80; sfr P1=0x90; sfr P2=0xa0; sfr P3=0xb0; sbit cs1=P2^0; sbit cs2=P2^1; sbit e=P2^2; sbit rw=P2^3;//可以直接接地 sbit di=P2^4; sbit rst=P2^5;//默认为1,可以直接接电源 extern unsigned char code abc[] ; ys(int ms) { int k,d; for(k=0;k<ms;k++) for(d=0;d<123;d