Henehefu 用 ウィキ

メニュー



- Views

最近の更新

取得中です。

WPFメモ > 今日書いたコンバータ > ChainConverter.cs


※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

// 
    [ContentProperty("Converters")]
    public class ChainConverter : IValueConverter
    {
        private delegate object ConvertFunc(object value, Type targetType, object parameter, CultureInfo culture);
        public ChainConverter()
        {
            Converters = new Collection<IValueConverter>();
        }
        #region IValueConverter メンバ
 
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return Chain(value, targetType, parameter, culture, c => c.Convert);
        }
 
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            return Chain(value, targetType, parameter, culture, c => c.ConvertBack);
        }
 
        #endregion
 
        private object Chain(object value, Type targetType, object parameter, CultureInfo culture, Func<IValueConverter, ConvertFunc> makeFunc)
        {
            var result = Converters.Aggregate(value, (v, c) => makeFunc(c)(v, targetType, parameter, culture));
            return result;
        }
 
 
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
        public Collection<IValueConverter> Converters
        {
            get;
            private set;
        }
    }
 

タグ一覧