Ist es möglich, Code hinter einem Ressourcenwörterbuch in WPF festzulegen? Beispielsweise deklarieren Sie in einer Benutzersteuerung für eine Schaltfläche diese in XAML. Der Ereignisbehandlungscode für den Schaltflächenklick erfolgt in der Codedatei hinter dem Steuerelement. Wenn ich eine Datenvorlage mit einer Schaltfläche erstellen möchte, wie kann ich den Ereignishandlercode für die Schaltfläche schreiben, indem Sie im Ressourcenwörterbuch klicken.
147
Antworten:
Ich denke, Sie möchten eine CodeBehind-Datei für ein ResourceDictionary. Sie können dies völlig tun! Tatsächlich machen Sie es genauso wie bei einem Fenster:
Angenommen, Sie haben ein ResourceDictionary mit dem Namen MyResourceDictionary. Fügen Sie in Ihrer Datei MyResourceDictionary.xaml das Attribut x: Class wie folgt in das Stammelement ein:
Erstellen Sie dann einen Code hinter der Datei MyResourceDictionary.xaml.cs mit der folgenden Deklaration:
Und du bist fertig. Sie können alles, was Sie möchten, in den Code dahinter einfügen: Methoden, Eigenschaften und Ereignishandler.
== Update für Windows 10 Apps ==
Und nur für den Fall, dass Sie mit UWP spielen, sollten Sie noch eines beachten:
quelle
x:Class="MyCompany.MyProject.MySubFolder1.MyResourceDictionary"
Andernfalls findet der xaml-Parser Ihre Klasse nicht, wenn Sie lediglich x: Class = "MyResourceDictionary" eingeben.Ich bin nicht einverstanden mit "ageektrapped" ... die Methode einer Teilklasse zu verwenden, ist keine gute Praxis. Was wäre dann der Zweck, das Wörterbuch von der Seite zu trennen?
Über einen Code-Behind können Sie auf das Element ax: Name zugreifen, indem Sie Folgendes verwenden:
Sie können dies in der OnApplyTemplate-Methode tun, wenn Sie beim Laden Ihres benutzerdefinierten Steuerelements eine Verbindung zu Steuerelementen herstellen möchten. OnApplyTemplate muss dazu überschrieben werden. Dies ist eine gängige Praxis und ermöglicht es Ihrem Stil, von der Steuerung getrennt zu bleiben. (Der Stil sollte nicht vom Steuerelement abhängen, aber das Steuerelement sollte von einem Stil abhängen.)
quelle
Gishu - obwohl dies eine "im Allgemeinen nicht zu ermutigende Praxis" zu sein scheint, ist hier ein Grund, warum Sie dies tun möchten:
Das Standardverhalten für Textfelder beim Fokussieren besteht darin, dass das Caret an derselben Position platziert wird, an der das Steuerelement den Fokus verloren hat. Wenn Sie in Ihrer gesamten Anwendung bevorzugen, dass der Benutzer den gesamten Inhalt des Textfelds hervorhebt, wenn der Benutzer zu einem Textfeld wechselt, reicht das Hinzufügen eines einfachen Handlers im Ressourcenwörterbuch aus.
Jeder andere Grund, aus dem sich das Standardverhalten der Benutzerinteraktion vom Standardverhalten unterscheiden soll, scheint ein guter Kandidat für einen Code in einem Ressourcenwörterbuch zu sein.
Stimmen Sie voll und ganz zu, dass alles, was für die Anwendungsfunktionalität spezifisch ist, nicht in einem Code hinter einem Ressourcenwörterbuch enthalten sein sollte.
quelle
XAML dient zum Erstellen von Objektgraphen, die keinen Code enthalten.
Eine Datenvorlage wird verwendet, um anzugeben, wie ein benutzerdefiniertes Benutzerobjekt auf dem Bildschirm gerendert werden soll ... (z. B. wenn es sich um ein Listenfeldelement handelt). Das Verhalten gehört nicht zum Fachgebiet einer Datenvorlage. Zeichnen Sie die Lösung neu ...
quelle