2010-12-18 8 views
0

Ich habe mehrere Beiträge zu dem Thema gelesen, aber immer noch nicht schaffen, es zu arbeiten.Ich verstehe nicht die Syntax zu erben ein wpf Benutzersteuerelement

Ich möchte 2 Benutzersteuerelemente slidertype1 und slidertype2, die von Slidercommontype erben sollen, alle sind in demselben Namespacecommon, kann jemand die Syntax für diesen einfachen Anwendungsfall kennen?

Inspiring von http://jamescrisp.org/2008/05/26/wpf-control-inheritance-with-generics/

Ich habe versucht:

<namespacecommon:slidercommontype x:Class="namespacecommon.slidertype1"> 

aber ich habe namespacecommon: slidercommontyp nicht in XML-Namespace existiert.

+1

Welche Syntax haben Sie bisher versucht, die nicht funktioniert? Und welche Sprache-C# oder VB.NET? –

+0

Ich habe aktualisiert siehe oben danke. – user310291

Antwort

3

Solange die Basisklasse keine XAML-Datei zugeordnet ist, ist es ziemlich einfach. Der Versuch, den visuellen Aspekt des Benutzersteuerelements mithilfe von XAML zu integrieren, ist kein wirklich unterstütztes Szenario.

gesagt haben, dass nur Ihre Klasse SliderCommonType erstellen (obwohl ich es Slider oder etwas nennen würde.)

namespace MyControls { 
    public class SliderBase : UserControl { 
    } 
} 

Dann basierend auf sie Ihre zwei Steuerelemente erstellen. Ich werde ein Beispiel zeigen und das andere sollte offensichtlich sein.

<Local:SliderBase x:Class="MyControls.SliderType1" 
        xmlns:Local="clr-namespace:MyControls"> 
</Local:SliderBase> 

Und der Code-behind würde wie folgt aussehen:

namespace MyControls { 
    public class SliderType1 : SliderBase { 
    } 
} 

Der entscheidende Punkt ist, dass Sie Ihre XAML-Datei die Basisklasse zu referenzieren hat, was wiederum die Änderung der die <UserControl> Element <Local:SliderBase> erfordert erfordert ein XAML-Namespace-Import.

Wenn Sie ein Benutzersteuerelement mithilfe der Standardvorlage hinzufügen, können Sie einfach den erstellten Code ändern, um die obigen Änderungen zu berücksichtigen. Es ist viel einfacher als der Versuch, es von Grund auf neu zu erstellen.

Eine letzte Sache zu beachten - Sie müssen Ihre Anwendung erfolgreich kompilieren, bevor Sie den visuellen Designer auf Ihren abgeleiteten Steuerelementen verwenden können. Dies liegt daran, dass der Designer SliderBase zur Entwurfszeit instanziieren kann.

+0

Vielen Dank, das funktioniert. – user310291

Verwandte Themen