用Binding并通过Converter转换的时候,可能偶尔会遇到传参的问题,一般通过设置xaml中的BindingParameter属性来给Converter传递参数。

但是这个BindingParameter只支持已经定义好的 资源类型(Resource) ,不支持int,Object等类型,在BindingParameter中也无法再次通过Binding的方法动态赋值。所以,折腾来折腾去还不如用MultiBinding得了。

1.XAML中的使用。

                        <Button  Margin="20,0"  Style="{StaticResource btnRecomendStyle}" >
                            <Button.Content>
                                <MultiBinding Converter="{StaticResource bool_PercentToStringConverter}">
                                    <Binding Path="IsTest"></Binding>
                                    <Binding Path="TestPercent"></Binding>
                                </MultiBinding>
                            </Button.Content>
                            <Button.Command>
                                <MultiBinding Converter="{StaticResource bool_PercentToCommandConverter}">
                                    <Binding Path="IsTest"></Binding>
                                    <Binding Path="TestPercent"></Binding>
                                </MultiBinding>
                            </Button.Command>
                        </Button>
Button的Content和Command都进行了两个绑定,这两个绑定将作为下面Converter类Object[]中的两个参数。

2.定义MultiConverter类,bool_PercentToStringConverter:

 class Bool_PercentToStringConverter : IMultiValueConverter
        public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
            bool b;
            int Percent;
            Boolean.TryParse(values[0].ToString(), out b);
            Int32.TryParse(values[1].ToString(), out Percent);
            if (b)
                if (Percent < 100)
                    return Application.Current.FindResource("IDS_CANCEL");
                    return Application.Current.FindResource("IDS_DONE");
                return Application.Current.FindResource("IDS_TEST");
        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
            throw new NotImplementedException();
这里不再实现IValueConverter接口,而是实现IMultiValueConverter。Object[] values里保存的就是传入的两个Binding。


WPF实现强大的动态公式计算
数据库可以定义表不同列之间的计算公式,进行自动公式计算,但如何实现行上的动态公式计算呢?行由于可以动态扩展,在某些应用场景下将能很好的解决实际问题。本文就探讨一下如何在WPF中实现一种基于行字段的动态公式计算。
WPF 定时器DispatcherTimer+GetCursorPos 的使用,动态查看屏幕上任一点坐标
原文:WPF 定时器DispatcherTimer+GetCursorPos 的使用,动态查看屏幕上任一点坐标 using System;using System.Collections.Generic;using System.
原文:WPF之动态换肤 如何实现换肤呢,对于复杂的换肤操作,如,更换按钮样式、窗口样式等,我们需要写多个资源字典来表示不同的皮肤,通过动态加载不同的资源字典来实现换肤的效果;对于简单的换肤操作,如更改背景颜色、设置窗体透明度,这种换肤操作,我们就不能使用上面的方法了,这个时候,我们只要在一个全局对象中添加几个属性,如背景颜色、前景颜色、窗体透明度等,然后,再绑定这几个属性就能达到我们想要的效果。
原文:WPF通过代码动态的加载样式 tabitem.SetResourceReference(TabItem.StyleProperty, "mainTabItemStyle"); tabitem.Content = new Goods.GoodsMain();
原文:WPF 4 动态覆盖图标(Dynamic Overlay Icon)      在《WPF 4 开发Windows 7 任务栏》一文中我们学习了任务栏的相关开发内容,同时也对覆盖图标(Overlay Icon)功能进行了一些介绍,其中覆盖图标是以静态方式呈现的。
原文:WPF 动态模拟CPU 使用率曲线图      在工作中经常会遇到需要将一组数据绘制成曲线图的情况,最简单的方法是将数据导入Excel,然后使用绘图功能手动生成曲线图。但是如果基础数据频繁更改,则手动创建图形可能会变得枯燥乏味。