开源WPF-Samples-netframework学习(1)DataBinding——BindingToMehod

案例地址:GitHub - microsoft/WPF-Samples: Repository for WPF related samples

一、运行界面

 二、案例功能描述

实现温度单位的转换

三、分析代码

1、温度输入TextBox的数据绑定

在WIndow.Resources中创建ObjectDataProvider:包装和创建可以用作绑定源的对象。

 <ObjectDataProvider ObjectType="{x:Type local:TemperatureScale}"
                        MethodName="ConvertTemp" x:Key="ConvertTemp">
            <ObjectDataProvider.MethodParameters> <!--方法的参数    -->
                <system:Double>0</system:Double>
                <local:TempType>Celsius</local:TempType>
            </ObjectDataProvider.MethodParameters>
  </ObjectDataProvider>

对TextBox的Text使用方法绑定数据

<TextBox Grid.Row="1" Grid.Column="1" Name="tb">
                <TextBox.Text>
                    <Binding 
                        Source="{StaticResource ConvertTemp}" 
                        Path="MethodParameters[0]" <!--  路径是参数1 -->
                        BindsDirectlyToSource="true"  <!-- 该值指示是相对于数据项还是DataSourceProvider 对象计算 Path     -->
                        UpdateSourceTrigger="PropertyChanged"
                        Converter="{StaticResource DoubleToString}">
                        <Binding.ValidationRules> <!--  用于检查用户输入有效性的规则的集合 -->
                            <local:InvalidCharacterRule/>
                        </Binding.ValidationRules>
                    </Binding>
                </TextBox.Text>
            </TextBox>

自定义检查用户输入有效性的规则的集合

InvalidCharacterRule : ValidationRule
    {
        public override ValidationResult Validate(object value, CultureInfo cultureInfo)
        {
            var myvalue = 0.00;

            try
            {
                if (((string) value).Length > 0)
                    myvalue = double.Parse((string) value);
            }
            catch (Exception e)
            {
                return new ValidationResult(false, "Illegal characters or " + e.Message);
            }

            return new ValidationResult(true, null);
        }
    }

2、单位选择ComboBox数据绑定

 <ComboBox Grid.Row="1" Grid.Column="2" 
        SelectedValue="{Binding Source={StaticResource ConvertTemp},
        Path=MethodParameters[1], BindsDirectlyToSource=true}"
>
                <local:TempType>Celsius</local:TempType>
                <local:TempType>Fahrenheit</local:TempType>

            </ComboBox>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值