Ich bin gerade mit WPF auf dem Laufenden und möchte ein wiederverwendbares WPF-Steuerelement erstellen.
Wenn ich mir die Optionen zum Erstellen von Projekten in Visual Studio ansehe, werden "WPF User Control Library" und "WPF Custom Control Library" angezeigt. Mir ist nicht klar, was der Unterschied zwischen ihnen ist, und meine Google-Suche hat keine anständigen Erklärungen ergeben.
Ich möchte die Unterschiede zwischen ihnen verstehen und im Idealfall einige Beispiele dafür sehen, wann man sie übereinander verwendet.
wpf
user-controls
custom-controls
17 von 26
quelle
quelle
Antworten:
In der Praxis implementieren Sie benutzerdefinierte Steuerelemente auf Codeebene, während Sie XAML für Benutzersteuerelemente verwenden können. Die benutzerdefinierten Steuerelemente erweitern eine der Basisklassen der WPF-Steuerelemente und bieten zusätzliche Funktionen durch Code, sodass die gesamte hinzugefügte Logik und Darstellung im Code implementiert werden muss.
Ein Benutzersteuerelement ist technisch gesehen ein normales Inhaltssteuerelement, das Sie an einigen Stellen im Code erweitern können. In der Regel wird es jedoch erweitert, indem andere Steuerelemente darin platziert werden. Wie Kent bereits erwähnt hat, ist ein UserControl eine Ansammlung anderer Steuerelemente. Dies schränkt die Möglichkeiten einer Benutzersteuerung erheblich ein. Es ist einfacher zu verwenden, aber eingeschränkter als ein vollständiges benutzerdefiniertes Steuerelement.
Diese Steuerelemente unterscheiden sich aus Sicht der Laufzeit geringfügig. Wenn Sie eine Anwendung erstellen und ein UserControl darin platzieren, enthält die Steuerungsstruktur eine konkrete UserControl-Vorlage. Wenn wir also ein lahmes Beispiel für einen speziellen Knopf betrachten. Wenn Sie ein Benutzersteuerelement verwenden, fügen Sie dem
<UserControl>
Element eine Schaltfläche hinzu . Wenn Sie ein benutzerdefiniertes Steuerelement verwenden, leiten Sie das Steuerelement höchstwahrscheinlich von einer Schaltfläche ab. Der Unterschied wäre im logischen Baum sichtbar.Während das benutzerdefinierte Steuerelement einen logischen Baum ähnlich wie bereitstellen würde
Das UserControl würde einen logischen Baum von geben
Am Ende ist das UserControl also nur ein normales ContentControl, das Sie ein wenig erweitern und für das Sie den Inhalt vordefinieren können. Die benutzerdefinierte Steuerung bietet eine größere Flexibilität zum Preis einer einfachen Implementierung, da Sie die gesamte Logik und Interaktion im Code ausführen müssen, anstatt den Vorteil von XAML zu nutzen.
Nach all dem glaube ich nicht, dass es so viele Unterschiede in den Visual Studio-Vorlagen gibt. Höchstwahrscheinlich erstellt das benutzerdefinierte Visual Studio-Steuerelement nur ein Projekt mit einem leeren benutzerdefinierten Steuerelement, während das Benutzersteuerelementprojekt ein Projekt mit einem leeren Benutzersteuerelement ist. Sie können dem Projekt später beliebige Elemente hinzufügen.
Aktualisieren
Meiner Meinung nach sollten Sie ein Benutzersteuerelement verwenden, wenn Sie mit einem Benutzersteuerelement etwas erledigen können und das zusätzliche Steuerelement im logischen Baum Sie nicht stört. Verwenden Sie ein Benutzersteuerelement, da diese so viel einfacher zu handhaben sind erstellen und pflegen. Verwenden Sie ein benutzerdefiniertes Steuerelement nur, wenn Sie einen Grund haben, kein Benutzersteuerelement zu verwenden.
quelle
A steht
Control
für ein Verhalten, das skinnbar (templatbar) ist, während aUserControl
im Allgemeinen eine übergeordnete Aggregation vonControl
s ist, die für eine Anwendung spezifisch ist.Weitere Infos hier .
quelle