2012-09-19 17 views
5

Es sieht nicht wie TypeConverter ist verfügbar zu verwenden. Was wird empfohlen, um dies zu ersetzen?WinRT Ersatz für System.ComponentModel.TypeConverter

Ich wollte gehen und meine eigene TypeConverter Klasse erstellen, um sie zu ersetzen, aber wenn es einen neuen oder besseren Weg in WinRT gibt, um es zu tun, würde ich diesen Weg gehen. Es gibt auch viele andere Klassen, die ich neu erstellen müsste; wie alle Standard-Konverter.

+0

'TypConverter' ist eigentlich eine ziemlich komplexe API, vor allem, wenn Sie alle Upstream-Rohrleitungen betrachten; Für Winrt, ja: Es ist ziemlich minimal - also: Um Ihre Frage zu beantworten, müssen wir wissen, welche Szenarien Sie unterstützen müssen. –

+0

Konvertieren einer Zeichenfolge in einen beliebigen integrierten Typ und zurück in eine Zeichenfolge. Hier kommen alle eingebauten Konverter, wie 'StringConverter' zum Einsatz. Ich verwende auch 'TypeDescriptor.GetConverter' und alle anderen Klassen, die um diese herum verwendet werden. Ich könnte nur die Funktionen implementieren, die ich benötige, indem ich einen "MissingFromRt45" -Satz von Klassen erstelle, aber es sieht so aus, als wäre die Liste der Klassen ziemlich groß. –

+0

Glaubst du, es wäre vorteilhafter, alle 'TypeConverter'-Dateien, die ich verwende, zu entfernen und sie in ein benutzerdefiniertes Typ-Konvertierungs-Setup umzuwandeln? Auf diese Weise funktioniert es unabhängig von der .NET-Version, auf der es ausgeführt wird. –

Antwort

2

Es gibt keine TypeConverter Klasse in der WinRT und das Team hat keine Pläne angekündigt, es in eine zukünftige Version aufzunehmen. Sie haben eine Reihe von Optionen.

Option 1: Wenn die Umwandlung ist als Teil eines Datenbindung Gebrauch gemacht werden die IValueConverter Schnittstelle als Dennis erwähnt.

Option 2: Wenn Sie sind der Schöpfer des Typs Sie Ihre eigene explizite oder implizite Operatoren hinzufügen Gießen unterstützen:

http://msdn.microsoft.com/en-US/library/xhbhezf4(v=vs.80).aspx

http://msdn.microsoft.com/en-US/library/z5z9kes2(v=vs.80).aspx

Option 3: Sie könnte eine eigene TypeConverter-Klasse erstellen.

Option 4: (So wie ich es tun würde, wenn sie nicht Teil einer Bindung) Sie können Ihre eigene Erweiterungsmethoden hinzufügen:

static public class ConverterExtensions 
{ 
    static public string ToFixedString(this double value) 
    { 
     return value.ToString("D"); 
    } 
} 

Welche lassen würden Sie Code wie folgt schreiben:

double d = 123.45; 
string str = d.ToFixedString(); // str now equals "123" 
+1

Wenn das Ziel ist, nur die Verwendung von TypeConverter in XAML-Deklarationen zu ersetzen, welche dieser Optionen ist vorzuziehen? Ich habe # 1 erfolglos versucht, und # 4 ist out. –

+0

Ich wäre wirklich interessiert, wie Sie die Option 3 implementieren. Ich kann kein Typkonverter-Beispiel in uwp finden. Es gibt auch eine Uservoice https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/9576897-implement-system-componentmodel-typconverter-in-w – Briefkasten

+0

Mit den Machern Update-Typ Converter kommen! http: // timheuer.com/blog/archive/2017/02/15/implementieren-typenkonverter-uwp-winrt-windows-10-xaml.aspx – Briefkasten

0

Verwenden Sie die Schnittstelle IValueConverter.

+0

Gibt es eingebaute Konverter, die diese Schnittstelle implementieren? –

+0

WinRT ist mehr Silverlight, als WPF. Ich denke also nicht, dass es irgendwelche Out-of-the-Box-Konverter gibt. – Dennis