WPF之绑定属性值转换

1,使用Binding.Format属性简易设置绑定的属性数据显示格式。

XML 复制代码
<TextBox  Grid.Row="2" Grid.Column="1">
                    <TextBox.Text>
                        <Binding Path="UnitCost"  StringFormat="{}{0:C3}"  >                            
                        </Binding>
                    </TextBox.Text>
</TextBox>

语法解析:

StringFormat="{}{0:C3}" :第一个{}表示转义标识,StringFormat以花括号开头的需要在表达式{0:C}前加上花括号进行标识转义否则xaml无法识别{0:C},但是如果以字符开头则可以省略用于转义标识的花括号,例如Binding.StringFormat=Value{0:C},此处就进行了省略。

**显示效果:**自动添加货币符,并显示指定的3位小数位数。

常用格式字符:

2,使用实现IValueConverter的值转换类。

Binding.StringFormat={}{0:C3}同等效果的值转换类

cs 复制代码
 class CustomValueConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return string.Format(culture, "{0:C3}", value);
        }

        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return decimal.Parse(value.ToString(), NumberStyles.Any, culture);
        }
    }

在xaml中添加转换类对象。

XML 复制代码
<TextBox  Grid.Row="2" Grid.Column="1">
                    <TextBox.Text>
                        <Binding Path="UnitCost"    >
                            
                            <Binding.Converter>
                                <local:CustomValueConverter></local:CustomValueConverter>
                            </Binding.Converter>
                        </Binding>
                    </TextBox.Text>
                </TextBox>

3,使用MultiBinding.StringFormat组合多个属性。

XML 复制代码
<TextBlock Grid.Row="3" Grid.Column="1">
                    <TextBlock.Text>
                        <MultiBinding StringFormat="{}{0},{1}">
                            <Binding Path="ModelName"></Binding>
                            <Binding Path=" ModelNumber"></Binding>
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>

显示效果:

4,使用实现IMultiValueConverter的值转换类。

实现与MultiBinding.StringFormat="{}{0},{1}"同等转换效果。

cs 复制代码
class CustomMultiValueConverter : IMultiValueConverter
    {
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
        {
            string modelName = values[0].ToString();
            string modelNumber = values[1].ToString();
            return string.Format("{0},{1}", modelName, modelNumber);
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
        {
            return null;
        }
    }
XML 复制代码
<TextBlock Grid.Row="3" Grid.Column="1">
                    <TextBlock.Text>
                        <MultiBinding >
                            <MultiBinding.Converter>
                                <local:CustomMultiValueConverter></local:CustomMultiValueConverter>
                            </MultiBinding.Converter>
                            <Binding Path="ModelName"></Binding>
                            <Binding Path=" ModelNumber"></Binding>
                        </MultiBinding>
                    </TextBlock.Text>
                </TextBlock>
相关推荐
xcLeigh16 小时前
WPF进阶 | WPF 数据绑定进阶:绑定模式、转换器与验证
c#·wpf
学与用3 天前
【deepseek实战】绿色好用,不断网
ai·c#·wpf
的不对不4 天前
WPF基础03——InitializeComponent()函数解释
windows·c#·.net·wpf
军训猫猫头4 天前
61.异步编程1 C#例子 WPF例子
开发语言·c#·wpf
时光追逐者4 天前
一组开源、免费、Metro风格的 WPF UI 控件库
ui·开源·c#·.net·wpf·.netcore·微软技术
军训猫猫头5 天前
58.界面参数传递给Command C#例子 WPF例子
开发语言·ui·c#·wpf
xcLeigh6 天前
WPF基础 | 深入 WPF 事件机制:路由事件与自定义事件处理
c#·wpf
军训猫猫头7 天前
60.await与sleep的原理分析 C#例子 WPF例子
开发语言·ui·c#·wpf
敲代码的TKP8 天前
WPF自定义布局--瀑布布局
wpf
xcLeigh8 天前
WPF基础 | WPF 基础概念全解析:布局、控件与事件
c#·wpf