Feedback

C# - Multi- & ValueConverter in einem

Veröffentlicht von am 11.10.2013
(0 Bewertungen)
In WPF kann man Datenbindungen mithilfe von Konvertern anpassen. Dabei wird unter einfachen und Multi-Konvertern unterschieden.
Multi-Konverter können aus mehreren Parametern einen Machen bzw. anders herum.

Nun kann es sein, das man die Funktionalität eines Multi-Konverters auch mit einem Parameter durchführen kann.
(Bsp.: Aktiviere solange mindestens eine TextBox den Fokus hat. Nun hat man aber nur eine Textbox...)

Da die Notation eines Multibindings länger ist, ist es natürlich praktischer einen normalen Konverter zu verwenden (wenn nötig). Dafür braucht man aber keine 2 Klassen.

Diese Klasse ruft für den normalen Konverter die Mutli-Konverter-Methoden auf. Natürlich steht es einem frei den einfachen Konverter frei anzupassen.
Snippet in VB übersetzen
    public class MyValueConverter : IMultiValueConverter, IValueConverter
    {
        #region IValueConverter Member

        public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return this.Convert(new object[] { value }, targetType, parameter, culture);
        }

        public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            return this.ConvertBack(value, new Type[] { targetType }, parameter, culture)[0];
        }

        #endregion

        #region IMultiValueConverter Member

        public object Convert(object[] values, Type targetType, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();//Konverter hier einbauen
        }

        public object[] ConvertBack(object value, Type[] targetTypes, object parameter, System.Globalization.CultureInfo culture)
        {
            throw new NotImplementedException();//Zurück-Konverter hier einbauen
        }

        #endregion
    }

Kommentare zum Snippet

 

Logge dich ein, um hier zu kommentieren!