WPF, Silverlight, Silverlight for Windows Phone und Metro Style Apps

WPF: Auf ValueConverter einfacher zugreifen
Kommentare

In der neuen Kolumne „XAML Expertise“ des Windows Developer präsentiert Gregor Biswanger Top-How-tos zum Thema XAML. Einsteiger und fortgeschrittene XAML-Experten sollen hier durch geballtes Wissen gesättigt werden. Heute gibt es folgende Expertise: „WPF: Auf ValueConverter einfacher zugreifen“.

In der Regel wird beim Ressourcenbereich von Windows oder gleich der allgemeinen Anwendung eine Instanz von ValueConverter erzeugt. Auf diese wird dann mittels StaticResource Binding zugegriffen. Der erste Schritt ist sehr wichtig für DataTemplates, Styles und ViewModels, jedoch sollen ValueConverter einfacher zugänglich gemacht werden können. Um das zu ermöglichen, reicht es aus, die eigenen ValueConverter durch die Basisklasse MarkupExtension zu erweitern. Die eigene Instanz wird dann von der überschriebenen ProvideValue-Methode zurückgegeben. Somit wird das Erstellen der Instanz automatisch bei der Verwendung erzeugt und steht anwendungsweit zur Verfügung (Listing 1).

Der neue ValueConverter wird dann ohne StaticResource-Deklaration verwendet, so wie Listing 2 verdeutlicht. So kann ein ValueConverter schneller und einfacher verwendet werden.

Listing 1: ValueConverter durch MarkupExtensions erweitern
public class BoolToVisibilityConverter : MarkupExtension, IValueConverter {   public override object ProvideValue(IServiceProvider serviceProvider)   {     return this;   }    public object Convert(object value, Type targetType, object parameter, CultureInfo culture)   {     if (value != null)     {       if ((bool) value)       {         return Visibility.Visible;       }        return Visibility.Collapsed;     }      return null;   }    public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)   {     if (value != null)     {       if ((Visibility) value == Visibility.Visible)       {         return true;       }        return false;     }      return null;   } }
Listing 2: Einfacher auf den neuen ValueConverter zugreifen
http://schemas.microsoft.com/winfx/2006/xaml/presentation"         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"         xmlns:wpfValueConverterSample="clr-namespace:WpfValueConverterSample"         Title="MainWindow" Height="350" Width="525">                       
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -