mit IValueConverter mit den aktuellen DataContext-in zwei-Wege-Bindung

Habe ich Probleme mit einem Konverter ich benutze zur Konvertierung zwischen string und unsere timeformat. Der Konverter an sich funktioniert gut und ist implemeneted wie diese:

    [ValueConversion(typeof(string), typeof(SimpleTime))]
    public class StringToSimpleTimeConverter : IValueConverter
    {
        public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
        {
            //convert from string to SimpleTime and return it
        }
        public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
        {
            //convert value from SimpleTime to string and return it
        }
    }

Den XAML-Code, der den Konverter verwendet, umfasst der Wandler selbst in das Benutzersteuerelement.Ressourcen wie diese:

<converter:StringToSimpleTimeConverter x:Key="stringToSimpleTimeConverter"/>

Wenn die Eigenschaft begegnet ist (ich bin mit dem datagrid aus dem wpf-toolkit im hintergrund) das datatemplate für die Bearbeitung der simpletime verwendet:

<DataTemplate x:Key="SimpleTimeEditingTemplate">
        <TextBox Text="{Binding, Converter={StaticResource stringToSimpleTimeConverter}, Mode=TwoWay}"/>
</DataTemplate>

Dem problem bin ich begegnet, ist, dass der Konverter muss ein Pfad angegeben, der dann bindend, wenn Sie eine twoway-Konverter (und ich brauche es in beide Richtungen), aber die Eigenschaft, die ich einstellen will, ist bereits die aktuelle DataContext - Was-Pfad kann ich angeben, für das dann?

Die einzige Lösung die ich mir vorstellen könnte, ist die Einführung einer dummy-Eigenschaft in der SimpleTime, dass nur die aktuellen SimpleTime oder setzt es.

public class SimpleTime
{
    ...
    public SimpleTime Clone
    {
        get { return new SimpleTime(_amount, _format); }
        set { this._amount = value._amount; this._format = value._format; }
    }
}

binden und dass man über

 <TextBox Text="{Binding Clone, Converter={StaticResource stringToSimpleTimeConverter}, Mode=TwoWay}"/>

das funktioniert aber nicht wirklich eine geeignete Lösung, vor allem, wenn ich brauche Konverter für mehr mal...

jede Hilfe ist willkommen
cheers, manni

InformationsquelleAutor manni | 2010-12-10
Schreibe einen Kommentar