2012-09-19 19 views
5

Kullanılacak TypeConverter gibi görünmüyor. Bunu değiştirmek için önerilen nedir?System.ComponentModel.TypeConverter için WinRT Değiştirme

Gitmek ve kullanmak için kullanmak için kendi TypeConverter sınıfımı oluşturacaktım, ancak bunu yapmak için WinRT'de yeni veya daha iyi bir yol varsa, o rotaya giderdim. Yeniden yaratmam gerekecek birçok başka sınıf da var; tüm varsayılan tip çeviriciler gibi.

+0

'TipConverter', özellikle tüm yukarı akış tesisatını düşündüğünüzde oldukça karmaşık bir API'dir; Winrt için evet: oldukça az - yani: soruya cevap vermek için hangi senaryoları desteklemeniz gerektiğini bilmemiz gerekecek. –

+0

Dizeyi yerleşik bir türe ve bir dizeye geri dönüştürme. Burada StringConverter gibi tüm yerleşik dönüştürücüler devreye girecek. Ayrıca 'TypeDescriptor.GetConverter' ve bunların etrafında kullanılan diğer sınıfları kullanıyorum. "MissingFromRt45" sınıf seti oluşturarak ihtiyaç duyduğum bu özelliklerden sadece özellikleri uygulayabilirim, ancak sınıfların listesi oldukça büyük olacak gibi görünüyor. –

+0

Kullandığım tüm 'TypeConverter' malzemelerini alıp özel bir tür dönüştürme ayarına dönüştürmenin daha faydalı olacağını düşünüyor musunuz? Bu şekilde, hangi .NET sürümü üzerinde çalışıyor olursa olsun çalışır. Bu benim önerim olacak –

cevap

2

WinRT'de TypeConverter sınıfı yoktur ve ekip gelecekteki bir sürümde içermeyi planladığını duyurmamıştır. Bir dizi seçeneğin var.

Seçenek 1: dönüşüm Dennis olarak IValueConverter arabirim bahsedilen veri bağlayıcı kullanımının bir parçası olarak yapılması ise.

Seçenek 2: Eğer kendi açık veya örtülü operatörleri ekleyebilir tip yaratıcısı dökümü desteklemeye değilse:

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

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

Seçenek 3: You kendi TypeConverter sınıfınızı oluşturabilir.

4. Seçenek: Kendi uzatma yöntemleri ekleyebilirsiniz (bağlayıcı bir parçası olmayan ben yapardım yön): Böyle bir kod yazalım olur

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

:

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

Amaç sadece XAML bildirimlerinde TypeConverter kullanımını değiştirmekse, bu seçeneklerden hangisi tercih edilir? Başarısız # 1 denedim ve # 4 çıktı. –

+0

Seçenek 3'ü nasıl uyguladığınızla gerçekten ilgilenirim. Uwp'de herhangi bir typeconverter örneği bulamıyorum. Ayrıca bir https://wpdev.uservoice.com/forums/110705-universal-windows-platform/suggestions/9576897-implement-system-componentmodel-typeconverter-in-w – Briefkasten

+0

bir uservoice vardır İçerik oluşturucuları güncelleme ile tipconverters geliyor! http: // timheuer./ Arşiv/2017/02/15/uygulamak tipi-dönüştürücü-UWP-winrt-windows-10-xaml.aspx com/blog – Briefkasten

0

IValueConverter arabirimini kullanın.

+0

Bu arabirimi uygulayan yerleşik dönüştürücüler var mı? –

+0

WinRT, WPF'den daha fazla Silverlight'tır. Yani, sanmıyorum, herhangi bir out-of-the-box dönüştürücüler vardır. – Dennis

İlgili konular