2012-09-19 12 views
5

No parece que TypeConverter esté disponible para su uso. ¿Qué se recomienda para reemplazar esto?Reemplazo de WinRT para System.ComponentModel.TypeConverter

Iba a crear mi propia clase TypeConverter para reemplazarla, pero si hay una forma nueva o mejor en WinRT para hacerlo, seguiría esa ruta. También hay muchas otras clases que necesitaría recrear; como todos los convertidores de tipo por defecto.

+0

'TypeConverter' es en realidad una API bastante compleja, especialmente si tenemos en cuenta todas las tuberías de aguas arriba; Para Winrt, sí: es bastante mínimo, entonces: para responder a su pregunta, necesitamos saber qué conjunto de escenarios debe soportar. –

+0

Convertir una cadena a cualquier tipo incorporado y volver a una cadena. Aquí es donde entrarán en juego todos los convertidores incorporados, como 'StringConverter'. También estoy usando 'TypeDescriptor.GetConverter' y cualquier otra clase usada alrededor de estos. Podría implementar solo las características de estos que necesito creando un conjunto de clases "MissingFromRt45", pero parece que la lista de clases será bastante grande. –

+0

¿Crees que sería más beneficioso sacar todas las cosas 'TypeConverter' que estoy usando y cambiarlas a una configuración de conversión de tipo personalizado? De esa forma funcionará sin importar en qué versión de .NET se esté ejecutando. –

Respuesta

2

No existe la clase TypeConverter en WinRT y el equipo no ha anunciado ningún plan para incluirla en una versión futura. Tienes un número de opciones.

Opción 1: Si la conversión es que ser hecho como parte de una utilización de enlace de datos la interfaz IValueConverter como Dennis mencionado.

Opción 2: Si usted es el creador del tipo que usted puede añadir sus propios operadores explícitas o implícitas de apoyo de calidad:

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

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

Opción 3: Usted podría crear su propia clase TypeConverter.

Opción 4: (La forma en que lo haría si no se parte de una unión) Usted puede añadir sus propios métodos de extensión:

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

Lo cual permite escribir código como este:

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

Si el objetivo es solo reemplazar el uso de TypeConverter en declaraciones XAML, ¿cuál de estas opciones es preferible? Intenté # 1 sin éxito, y # 4 está fuera. –

+0

Me interesaría mucho cómo implementa la opción 3. No puedo encontrar ningún ejemplo de typeconverter en uwp. También existe una uservoice https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/9576897-implement-system-componentmodel-typeconverter-in-w – Briefkasten

+0

¡Con la actualización de creadores, los convertidores de tipo están por llegar! http: // timheuer.com/blog/archive/2017/02/15/implement-type-converter-uwp-winrt-windows-10-xaml.aspx – Briefkasten

0

Utilice IValueConverter interfaz.

+0

¿Hay algún convertidor integrado que implemente esta interfaz? –

+0

WinRT es más Silverlight, que WPF. Entonces, no creo que haya convertidores listos para usar. – Dennis