2009-12-17 9 views
11

Ich habe gerade meine Füße nass in Silverlight, und verstehe nicht wirklich die Unterschiede und Vor-und Nachteile der Erstellung eines UserControl vs. Erstellen eines Control für die gleiche Aufgabe (wie wenn Sie mit der rechten Maustaste auf eine Auswahl in Expression klicken Mischung, zum Beispiel).Wann UserControl im Vergleich zu Kontrolle in Silverlight verwenden?

Es scheint, als würde die Auswahl von "Make In Control" nur eine neue Vorlage für den von Ihnen angegebenen Basistyp erstellen, während beim Erstellen eines UserControl eine neue Basisklasse erstellt wird. Ist das korrekt?

Screenshot http://tinyurl.com/yjsaox9

In diesem speziellen Fall, ich bin eine benutzerdefinierte Textfeldsteuerelement zu schaffen, die nur Zahlen nimmt, und teilt sich in 3 Abschnitte, 3 Werte in getrennte Objekte zu speichern, wie unten dargestellt. In diesem speziellen Fall, welcher wäre der beste?

Screenshot 2 http://tinyurl.com/y9x7zox

aktualisieren (Zusatzfrage): Warum kann ich nicht verwenden Vorlage mit einem Usercontrol Bindung, aber ich kann mit Control? Das ist ein Grund, warum ich dachte, dass das Erstellen eines Benutzersteuerelements möglicherweise nicht die richtige Entscheidung ist.

Antwort

3

Dov, ich denke du hast deine eigene Frage mit deinem Update beantwortet. Benutzerdefinierte Steuerelemente sind am nützlichsten, wenn Sie ein Steuerelement erstellen möchten, das das Templating unterstützt. Andernfalls sind sie nützlich, wenn Sie von anderen Steuerelementen vererben, um die Funktionalität sauber hinzuzufügen (TextBox -> PasswordTextBox).

+0

Ja, eine benutzerdefinierte Steuerung macht definitiv den meisten Sinn für mich. Vielen Dank. – Dov

4

Wenn Sie Ihre Steuer betrachten eine Gruppe von drei Textfelder werden dann ein UserControl angemessen wäre, aber wenn Ihre Kontrolle wird im Wesentlichen noch sein ein TextBox dann sollten Sie die bestehende Regelung mit erweitern „Machen Sie in Kontrolle.“

Es klingt wie Sie brauchen ein UserControl für mich.

8

UserControls sollen eine zusammengesetzte Steuerung sein - im Grunde eine Reihe anderer "Steuerelemente", die so gruppiert sind, dass sie als eine zusammenhängende Einheit funktionieren.

Custom Controls hingegen sollen als eine einzige Steuerung verwendet werden. Denken Sie an die grundlegenden Steuerelemente im Framework, z. B. TextBox oder Button - wenn Sie so etwas implementieren, möchten Sie ein Control. (Dies ist weniger üblich als UserControls, insbesondere in WPF, da Sie Templating für Basisklassensteuerelemente verwenden können, um einige Dinge zu erreichen, bei denen Sie benutzerdefinierte Steuerelemente in anderen Frameworks benötigen). Bei einem benutzerdefinierten Steuerelement geht es darum, ein neues Verhalten für eine einzelne "Steuerung" zu definieren.

+0

Gibt es eine Möglichkeit, Template Binding mit einem UserControl zu verwenden? – Dov

+1

Nun, Vorlagen für einzelne Elemente im Composite-Steuerelement (dh: ein TextBox wird eine Vorlage TextBoxen zugewiesen) gelten für die Benutzersteuerung (vorausgesetzt, es bietet keine eigene), aber Sie erhalten nicht die gleiche Ebene wie Sie mit einem benutzerdefinierten Steuerelement tun. –