using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Data;
using System.Windows;
using System.Globalization;
using System.ComponentModel;
namespace BindableConverterParameterTake3
{
class TestValueConverterWithOneObjectParameter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (parameter == null || ((object[])parameter).Any(param => param == null))
{
return value.ToString();
}
return value.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
MessageBox.Show("New value for the Binding-Source: " + value.ToString() + " ;Current value of the Binding-Source: " + ((object[])parameter)[0].ToString());
return value;
}
}
class MultiValueMultiMixedConverterParameterConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values == null || values.Any(v => { return v == null || v == DependencyProperty.UnsetValue; }))
{
return "";
}
object[] parameters = (object[])parameter;
if (parameter == null || parameters == null || ((object[])parameter).Any(param => param == null))
{
return "";
}
return values[0].ToString() + parameters[0].ToString() + parameters[1].ToString() + parameters[2].ToString() + values[1].ToString();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
object[] parameters = (object[])parameter;
string AllConcatSigns = parameters[3].ToString();
string[] FirstNameLastName = value.ToString().Replace(parameters[2].ToString(),"").Split(AllConcatSigns.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
return new object[] { FirstNameLastName[0], FirstNameLastName[1] };
}
}
class MultiValueMultiConverterParameterConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (values == null || values.Any(v => { return v == null || v == DependencyProperty.UnsetValue; }))
{
return "";
}
object[] parameters = (object[])parameter;
if (parameter == null || parameters == null || ((object[])parameter).Any(param => param == null))
{
return "";
}
return values[0].ToString() + parameters[0].ToString() + parameters[1].ToString() + values[1].ToString();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
object[] parameters = (object[])parameter;
string AllConcatSigns = parameters[2].ToString();
string[] FirstNameLastName = value.ToString().Split(AllConcatSigns.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
return new object[] { FirstNameLastName[0], FirstNameLastName[1] };
}
}
class TestValueConverterWithTwoObjectsParameter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (parameter == null || ((object[])parameter).Any(param => param == null))
{
return value.ToString();
}
return value.ToString() + (((object[])parameter)[0].ToString() == "-" ? (((object[])parameter)[0].ToString() + ((object[])parameter)[1].ToString()) : "");// ?? ((object[])parameter)[0].ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
object[] parameters = (object[])parameter;
string ret= value.ToString().Replace(parameters[0].ToString(), "").Replace(parameters[1].ToString(), "");
return ret;
}
}
class TestValueConverterWithThreeObjectsParameter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (parameter == null || ((object[])parameter).Any(param => param == null))
{
return value.ToString();
}
return value.ToString() + (((object[])parameter)[0].ToString() == "-" ? (((object[])parameter)[0].ToString() + ((object[])parameter)[1].ToString() + ((object[])parameter)[2].ToString()) : "");// ?? ((object[])parameter)[0].ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.ToString().Replace(parameter.ToString(), "");
}
}
class TestValueConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.ToString() + parameter ?? parameter.ToString();
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return value.ToString().Replace(parameter.ToString(), "");
}
}
class TestMultiValueConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
return values[0].ToString() + (parameter != null ? parameter.ToString() : "") + values[1] ?? values[1].ToString();
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
#region Enum Converters
class EnumMember2Description : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
{
return null;
}
object[] parameters = (object[])parameter;
Type t = (Type)parameters[0]; //the enum type
DescriptionAttribute descrattr = t.GetField(value.ToString()).GetCustomAttributes(typeof(DescriptionAttribute), false).First() as DescriptionAttribute;
return descrattr.Description;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
class Value2SelectedEnum : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value == null)
{
return null;
}
object[] parameters = (object[])parameter;
Type t = (Type)parameters[0];
var v2 = Enum.ToObject(t, value);
return v2;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
//object[] parameters = (object[])parameter;
return (int)value;
}
}
#endregion
}