2010-11-24 7 views
4

Ich habe eine generische Basisseitenklasse, die ich gerne mit meinen Silverlight-Seiten verwenden würde. Das einzige Problem ist, dass das x: TypeArguments-Attribut nicht zu funktionieren scheint.Silverlight 4 Unterstützung für x: TypeArguments

Das Attribut wird nur auf das Stammelement der XAML-Seite und nirgendwo sonst angewendet.

Die Fehlermeldung, die ich vom Compiler bekomme, lautet: "Using the generic type 'Base.BasePage<T>' requires 1 type arguments". Dieser Fehler verweist immer auf die generierte Page.g.i.cs-Datei. Hier

ist ein Beispiel dafür, was mein Root-Element wie folgt aussieht:

<Base:BasePage x:TypeArguments="ViewModels:MyViewModel"> 

ich Probleme bei der Suche gute Informationen gehabt haben, ob diese unterstützt wird, in Silverlight 4. Jede Hilfe wäre sehr geschätzt. Vielen Dank!

Antwort

3

Leider wird es in Silverlight noch nicht unterstützt. Wenn Sie eine Klasse in XAML einschließen möchten, kann sie nicht generisch sein. Sie könnten immer noch ein generisches Element haben und es dem Code aus dem Code hinzufügen, aber nicht direkt in XAML.

+1

Danke für die Antwort. – user326502

+0

Ändert sich die Situation in Silverlight 5? –

0

Diese Problemumgehung gilt nur für WPF-Anwendungen. Derzeit unterstützt Silverlight die Eigenschaft x: TypeArguments nicht, die im XAML-Stammtag des Ableitungssteuerelements benötigt wird.

Wenn Sie Silverlight-Steuerelemente benötigen, die von einer generischen Basisklasse abgeleitet werden, müssen Sie zusätzliche Arbeit leisten. Grundsätzlich müssen Sie eine zusätzliche Klasse in der Mitte haben, so dass das Benutzersteuerelement aus einer nicht-generischen Klasse ableiten würde

Basisklasse: public class GenericBase: Usercontrol

Mittelklasse: public class MiddleStringControl: GenericBase

Usercontrol: public class UserControlWithGenericBase: MiddleStringControl

können Sie diese Web-Seite

deriving-from-a-generic-base-class