Wie man korrekt von einer Benutzersteuerung erbt, die in XAML in Silverlight definiert ist
Wenn ich ein usercontrol (Silverlight), dass ich geschrieben habe, das verwendet XAML zu definieren, der es Auftritt, wie kann ich eine angepasste version?
also ich habe MyControl.xaml & MyControl.xaml.cs
Was muss ich tun, wenn ich eine "SpecialisedControl" das Kind in der Klasse? Ich nehme an, ich Mach einfach einen neuen code-Datei, dann Erben von MyControl. Aber was ist, wenn ich das Aussehen ändern möchten von der Basis-Klasse - dann was soll ich tun?
InformationsquelleAutor der Frage Mark Ingram | 2008-10-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Schrieb ich dieses denken Sie redeten über WPF, anstatt Silverlight, aber es kann genug sein, überschneiden sich diese, um nützlich zu sein, so bin ich Entsendung es sowieso nicht.
Wenn du mit "ändern Sie die Darstellung der Basis-Klasse" meinst du "eine neue Vorlage", dann ist das, was Sie brauchen, ist wahrscheinlich ein CustomControl, nicht ein UserControl.
Der beste Weg, dies zu erreichen, Folgen Sie dem Beispiel von anderen Microsoft-Steuerelemente, wie Button oder ListBox:
Dies ist sicherlich viel mehr Arbeit als einfach abgeleitet von UserControl, aber wenn Sie wollen in der Lage sein, völlig neu-Vorlage bestimmt, wie Sie können mit der integrierten Steuerelemente, ist dies der Weg, es zu tun.
Auf der anderen Seitewenn alles, was Sie wollen zu tun ist, um eine bestimmte Menge begrenzt Anpassungen, wie das ändern der hintergrund-oder zuordnen eines Befehls mit einigen Benutzer-Aktion, dann ist die beste Sache zu tun ist, um DependencyProperties, die eingestellt werden können dann im Stile der für das Steuerelement, oder auf Instanzen der Kontrolle, selbst.
Im Fall, den Sie erwähnt haben zu wollen, passen Sie das Aussehen in einem geerbten Kontrolle, der Prozess ist ziemlich ähnlich: fügen Sie eine Standard-Stil für die neue Steuerung mit einem neuen Vorlage, wenn Sie benötigen, um mehr hinzuzufügen event-Handler, nur absolut sicher sein, dass Sie call-Basis.OnApplyTemplate().
InformationsquelleAutor der Antwort David Mitchell
Ich weiß nicht, ich unternehme gerne Dinge mit einfach nur Objekte. Hier ist ein Artikel, der beschreibt, eine einfache Möglichkeit zu rutschen, XAML gestaltete Kontrolle außerhalb Ihrer Vererbungshierarchie, so dass Sie anpassen können Erscheinungsbild und Verhalten SimpleThingsLikeInheritance eher als MicrosoftStuffThatAlmostWorks
http://gen5.info/q/2009/02/10/subverting-xaml-how-to-inherit-from-silverlight-user-controls/
InformationsquelleAutor der Antwort user65185
Als RA Mihnea ' s link beschreibt, die einfachste Lösung ist, einfach fügen Sie einen namespace in der XAML:
C#
XAML
InformationsquelleAutor der Antwort Chris S
Können Sie dieses Problem durch die Verwendung einer wrapper wie beschrieben in den link oben.
Aber Sie können auch verwenden Sie das Strategie-Muster, dieses problem zu lösen.
In diesem Beitrag werde ich erklären, wie die Implementierung dieser beiden Methoden.
http://www.lab101.be/2008/07/silverlight-usercontrol-inheritance/
InformationsquelleAutor der Antwort