2016-03-30 7 views
0

nach einer wenig Recherche fand ich heraus, dass wir nicht generische Typen in der Seite, wie diese verwenden:Wie machen die Seite UWP generic

public class MyPage<T> : Page where T : class 

Der Grund dafür ist, dass wir nicht sagen können die XAML-Datei der Seite, was ist das T (korrigieren Sie mich, wenn ich falsch liege). sah ich eine mögliche Lösung im Internet, wo es so etwas wie dies geschieht:

//this page has only cs file 
public class MyPage<T> : Page where T : class 
{ 
} 


//this page again is constructed only from cs file 
public class BasePage : MyPage<ViewModel> 
{ 
} 

//at last we have a page with xaml file that can be shown 
public class MainPage : BasePage 
{ 
} 

Wie Sie dieser Code sieht seltsam sehen variieren und ich diese Lösung nicht mag.

Also kann jemand eine gute Lösung für dieses Problem Zweck? Vielleicht mit einem Beispiel.

+1

Was möchten Sie damit erreichen? Hast du ein Beispiel? – Domysee

+0

Zumindest müssten Sie die Klasse "internal" machen, da WinRT offene Genetik nicht unterstützt. Funktioniert 'typeof (Seite ) nicht? –

+0

Das Ziel ist, wenn eine neue Seite erstellt wird, wird die Seite einige grundlegende Implementierung haben, die von der BasePage verwendet werden kann und mit dem ViewModel, das als generischer Typ, z. wenn ich Methode in der Basepage 'public void DoSomething (T Ansichtsmodell) haben;' wenn ich diese Methode in der Seite verwenden, muss ich diese 'public void DoSomething (MyViewModel Ansichtsmodell) { // ein paar coole Sachen } 'und ich werde die Art von Objekt, die ich erwarte, ohne die Notwendigkeit einer Besetzung bekommen. – Stoian

Antwort

0

Sie dies nicht tun, da dies nicht in der aktuellen XAML-Spezifikation unterstützt wird. Das Erstellen einer Seite ist übrigens eine großartige Idee, insbesondere um eine Ansichtsmodelleigenschaft stark zu typisieren. Das Plattform-Team kennt diese Anfrage übrigens. Sie können jedoch IView<T> implementieren, wenn Sie arbeiten möchten.