中国上海网站首页,网站建设用户调研,做网站源码,天长网站建设1、Brushes用错了命名空间将导致程序无法正确工作。笔者曾写了一个flag值转换为相应的Brush#xff0c;由于不小心Using了一个错误的命名空间#xff08;System.Drawing#xff09;导致Xaml文件界面元素Fill绑定属性总出不来应有的效果。最后费了好大劲才发现#xff0c;替…1、Brushes用错了命名空间将导致程序无法正确工作。笔者曾写了一个flag值转换为相应的Brush由于不小心Using了一个错误的命名空间System.Drawing导致Xaml文件界面元素Fill绑定属性总出不来应有的效果。最后费了好大劲才发现替换为正确的命名空间System.Windows.Media后立马就解决了。特此留下随笔备忘。 2、下面是一个IMultiValueConverter的例子 Window x:ClassWpfApplication16.Window1 xmlnshttp://schemas.microsoft.com/winfx/2006/xaml/presentation xmlns:xhttp://schemas.microsoft.com/winfx/2006/xaml xmlns:myclr-namespace:WpfApplication16 TitleWindow1 Height300 Width300 Window.Resources my:RgbConverter x:KeyRgbConverter / /Window.Resources Window.Background SolidColorBrush SolidColorBrush.Color MultiBinding Converter{StaticResource RgbConverter} Binding PathValue ElementNameredSlider / Binding PathValue ElementNamegreenSlider / Binding PathValue ElementNameblueSlider / /MultiBinding /SolidColorBrush.Color /SolidColorBrush /Window.Background StackPanel Slider Minimum0 Maximum255 x:NameredSlider / Slider Minimum0 Maximum255 x:NamegreenSlider / Slider Minimum0 Maximum255 x:NameblueSlider / /StackPanel
/Window public class RgbConverter : IMultiValueConverter
{ #region IMultiValueConverter Members public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture) { var r System.Convert.ToByte(values[0]); var g System.Convert.ToByte(values[1]); var b System.Convert.ToByte(values[2]); return Color.FromRgb(r, g, b); } public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } #endregion
} 3、多值参数如何处理譬如希望value为真时返回ConvertParameter指定R,G,B的颜色值Brush否则返回透明Brush。 Border Grid.ColumnSpan3 BorderBrush{Binding Converter{StaticResource BoolToSolidColorBrushConverter}, ConverterParameter255,0,0, PathIsInclusive} BorderThickness2Image Source{Binding Image} Opacity{Binding ImageOpacity} /
/Border public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{Brush result Brushes.Red;if (parameter ! null){string[] rgb parameter.ToString().Split(,);if (rgb.Length 3){byte r 0;byte.TryParse(rgb[0], out r);byte g 0;byte.TryParse(rgb[1], out g);byte b 0;byte.TryParse(rgb[2], out b);result new SolidColorBrush(Color.FromRgb(r, g, b));}}if (value null) return Brushes.Transparent;string valueString value.ToString();if (value.ToString() 1){valueString True;}else if (value.ToString() 0){valueString False;}bool boolValue false;if (!bool.TryParse(valueString, out boolValue)){boolValue false;}if (boolValue) return result;return Brushes.Transparent;
} 转载于:https://www.cnblogs.com/chriskwok/archive/2012/08/17/2644201.html