‫Willkommen zurück.
‫Und in diesem Video werden wir über Abhängigkeitseigenschaften sprechen, und sie sind super wichtig,
‫sobald wir zur Datenbindung kommen.
‫Und im Allgemeinen ist es sinnvoll, dass Sie verstehen, wie sie funktionieren.
‫Lassen Sie uns also weitermachen und eine Schaltfläche in unserem Raster erstellen.
‫Und das tun wir einfach, indem wir das Schlüsselwort button erstellen, wie wir bereits mehrfach gesehen haben.
‫Und hier weise ich einfach eine Höhe von, sagen wir, einhundert Pixel und eine Breite
‫von zweihundert Pixeln zu und dann den Inhalt von click me.
‫Und jetzt möchte ich etwas namens Hintergrund verwenden.
‫Es gibt also eine Eigenschaft namens background, die ich einem Abwasserkanal zuweisen möchte, OK?
‫Sicher.
‫Das wird also mein Knopf sein.
‫Und wie Sie jetzt sehen können, hat es nur eine Art Farbe.
‫Vielleicht sollten wir es rot machen.
‫Wie rot ist ziemlich stark.
‫Blassviolett, rot.
‫Das sieht gut aus.
‫Also eine schlichte Farbe.
‫Die Idee dahinter ist also, dass ich Ihnen erklären möchte, was Abhängigkeitseigenschaften sind, wo sie sind
‫und wie Sie Ihre eigenen Abhängigkeitseigenschaften erstellen.
‫Und das geht ganz einfach mit einem Knopf, würde ich sagen.
‫Und übrigens, dieser Button und eigentlich werde ich ihn so schließen, weil ich diesen Button stylen möchte.
‫Innerhalb der Schaltflächen-Tags möchte ich dieser Schaltfläche etwas mehr Stil hinzufügen.
‫Und der Stil sollte ein Auslöser sein.
‫Also möchte ich triggern.
‫Wenn ich also in den Button-Bereich komme, dann möchte ich die Farbe ändern oder so ähnlich.
‫Also werde ich einen Button-Dot-Stil verwenden.
‫Nun, dieser Schaltflächenstil benötigt hier einen Stil, damit ich hier unseren eigenen Stil erstellen kann, und ich werde
‫ein Ziel für diesen Stilzieltyp festlegen.
‫Es wird Knopf.
‫Das ist nicht genug, denn was ich jetzt tun möchte, ist, diesem Stil einen Trigger hinzuzufügen.
‫Also werde ich Style-Trigger verwenden.
‫Wie dieses hier, und jetzt kann ich schöne kleine Auslöser erstellen, die ausgelöst werden, sobald ein Ereignis eintritt und wir bereits
‫Ereignisse gesehen haben, aber das ist ein etwas anderes Ereignis.
‫Es ist also ein Trigger, den wir wie folgt verwenden können.
‫Wir können hier einen Trigger erstellen und dieser Trigger hat eine Eigenschaft.
‫Und das ist zum Beispiel mit der Maus darüber.
‫Sobald sich die Maus über dieser Schaltfläche befindet, sollte der Wert auf true gesetzt werden.
‫Und in diesem Trigger brauche ich dann Setas.
‫Was also passiert, wenn dies der Fall ist?
‫Ich werde also die Eigenschaft font size auf den Wert dreißig setzen, da die Schriftgröße jetzt viel kleiner
‫ist.
‫Hier haben wir also den Button, der eine bestimmte Breite hat und einen Inhalt und eine Breite und all diese
‫Dinge.
‫Und ich habe einen Piloten mit heftigem Rot gemacht und dann einen Stil zu diesem Knopf hinzugefügt.
‫Und dieser Stil, den ich hinzugefügt habe, ist tatsächlich ein Auslöser.
‫Ich kann also sagen, dass es so genannte Style-Trigger gibt, die einen Style-Wechsel auslösen.
‫Und das ist der Auslöser, der ausgeführt wird, sobald sich die Maus über dieser Schaltfläche befindet, und das wird die Dinge einstellen.
‫Es wird also die Schriftgröße auf die Werte setzen, die wir hier angegeben haben,
‫und jetzt weisen wir diesen Wert hier zu, was bedeutet, dass er ausgelöst wird, sobald der Mouseover wahr ist.
‫Und das ist wahr, sobald wir über unsere Maus schweben oder sobald wir über die Schaltfläche sind.
‫Wenn wir das also ausführen, sollten wir einige Änderungen sehen.
‫Und dies ist ein ziemlich langer Ansatz, um nur eine Hover-Funktionalität zu haben, aber es ist viel mehr, das wir
‫hier verwenden möchten.
‫Sie sehen also, ich fahre darüber und die Farbe ändert sich in diese bläuliche Farbe und dann haben wir diesen Text, der dann
‫größer erscheint.
‫Der Wert ändert sich also auf 30.
‫Also das ist großartig und alles.
‫Aber warum brauchen wir diesen langen Code?
‫Die Sache ist die, dass wir hier Eigenschaften verwenden.
‫Wie Sie sehen können, wird dieses Ding Eigentum genannt.
‫Und tatsächlich ist die Breite eine Eigenschaft, der Inhalt eine Eigenschaft, der Hintergrund eine Eigenschaft.
‫Und sie hängen von Abhängigkeitseigenschaften ab oder sind mit Abhängigkeitseigenschaften verbunden und für das
‫Data Mining wichtig.
‫Wie gesagt, was wir im nächsten Video oder einem der nächsten Videos behandeln werden.
‫Aber es ist auch wichtig, dieses Triggerereignis zu haben oder dass der Button weiß, was los
‫ist.
‫Lassen Sie uns also weitermachen und eine Schaltfläche in unserer Hauptfenstermethode erstellen.
‫Ich werde nur einen Button erstellen.
‫Und jetzt möchte ich mir die Klasse selbst ansehen.
‫Gehen Sie also zur Definition, damit Sie einfach F 12 drücken können, um zur Definition zu gelangen.
‫Dadurch wird mir die Schaltflächenklasse angezeigt.
‫Und wie Sie sehen, handelt es sich um eine Klasse, die von Button-basiert erbt.
‫Es gibt eine statische schreibgeschützte Abhängigkeitseigenschaft, die Standard ist, Eigenschaft ist abgebrochen, Eigenschaft
‫hat Standardeigenschaft.
‫Also nicht zu viel.
‫Was man aber auch sieht ist, dass es sich hier eigentlich um ein normales Grundstück handelt.
‫Dies ist also ein SIEGEL.
‫Unsere Eigenschaft, die wir hier haben, die als diese Vorgabe bezeichnet wird, wird gelöscht und
‫wird standardmäßig verwendet, und diese sind mit diesen Abhängigkeitseigenschaften verbunden.
‫Es stellt also eine Eigenschaft dar, die durch Methoden wie Kacheln, Datenbindungsanimation und Vererbung
‫festgelegt werden kann.
‫Data Mining ist also, wie gesagt, etwas, das wir später beim Styling behandeln werden.
‫Das ist gut.
‫Aber wir haben gerade unseren Button gestaltet und können dafür Animation und Vererbung verwenden.
‫Aber jetzt werfen wir einen genaueren Blick auf die Schaltflächenbasis, damit wir wissen, dass die Schaltfläche von der Schaltflächenbasis
‫erbt.
‫Dann können wir zur Definition der Schaltflächenbasis gehen und überprüfen.
‫Gut.
‫Es ist eine Inhaltskontrollklasse.
‫Die Schaltflächenbasis erbt also von der Inhaltssteuerung, was, nun ja, die Schaltflächenbasis hat ein Routing-Ereignis, wie Sie hier
‫sehen können, Click-Ereignis.
‫Und wir haben das letzte Mal gesehen, dass das DOT-Ereignis enthalten ist, und es hat auch viele
‫Abhängigkeitseigenschaften, wie zum Beispiel den gedrückten Klickmodus, den Eigenschaftsbefehl, das Ziel und so weiter.
‫Aber einige davon haben wir noch nicht berührt.
‫Aber was noch interessanter ist, wenn wir noch tiefer in die Inhaltskontrolle einsteigen, können wir sehen, dass es
‫eine Eigenschaft gibt, die besagt, dass sie Inhalt hat.
‫Dieser kümmert sich also um den gesamten Inhalt der Schaltfläche.
‫Der Text ist beispielsweise ein Textblock innerhalb unserer Schaltfläche.
‫Wenn wir also Inhalte innerhalb unserer Schaltfläche haben, dann.
‫Es wird von dieser Klasse oder von dieser Inhaltskontrollklasse behandelt, und wir können sogar noch
‫tiefer gehen, zur Definition gehen und hier viele Abhängigkeitseigenschaften und Root-Ereignisse finden.
‫Und diese Steuerklasse hat Abhängigkeitseigenschaften, die als Put-Eigenschaft und dann als Wasserbürste bezeichnet werden.
‫Also die Farbe des Wassers, dann eine vertikale Inhaltsausrichtung, horizontale Inhaltsausrichtung.
‫Und jetzt ist dieser hier für uns interessant, weil wir ihn verwendet haben.
‫Es ist eine Hintergrundeigenschaft und genau die haben wir in unserer Zemo-Datei festgelegt.
‫Wie Sie hier sehen können, haben wir den Hintergrund zu blassviolettem Rot erklärt, damit wir über unsere Eigenschaften hier auf
‫diese Abhängigkeitseigenschaften zugreifen können.
‫Das sind also unsere Eigenschaften wie Schriftgröße, Schriftart, Familienhintergrund, Vordergrund, all die Dinge, die wir
‫verwenden, wenn wir mit Steuerelementen und einer Schaltfläche arbeiten, zum Beispiel als Steuerelement oder Textblock, es ist
‫auch ein Steuerelement.
‫Sie erben also alle von dieser Kontrollklasse und haben alle diese Abhängigkeitseigenschaften, die
‫dann Änderungen auslösen und darüber informieren.
‫Hier sehen wir auch, dass Abhängigkeitseigenschaften etwas Wichtiges sind, nämlich dass sie immer
‫statisch und schreibgeschützt sind.
‫Dies ist also sehr wichtig.
‫Außerdem sehen Sie, dass sie immer mit dem Eigenschaftsnamen enden.
‫Also sagen wir hier immer, wenn wir eine Abhängigkeitseigenschaft definieren, background, was denselben Namen wie die Eigenschaft
‫selbst hat.
‫Also hier zum Beispiel, wo ist es?
‫Es gibt Hintergrund, aber dann auch noch der Begriff Eigenschaft am Ende.
‫Also sehr lange Geschichte.
‫Und wir haben sehr tief gegraben.
‫Aber dann zeigen wir Ihnen ein wenig mehr, was diese Abhängigkeitseigenschaften sind und womit wir die ganze
‫Zeit arbeiten.
‫Wir spielen also mit Eigenschaften herum, aber sie funktionieren tatsächlich mit den Abhängigkeitseigenschaften.
‫Warum brauchen wir das alles?
‫Nun, nur um zu verstehen, was hier mit diesem Trigger vor sich geht, verwendet YPF hier eine
‫Abhängigkeitseigenschaft.
‫Dies ist zum Beispiel Mouseover, und Mouseover bietet mit Hilfe von Abhängigkeitseigenschaften eine Kettenbenachrichtigung an WPX,
‫und das ermöglicht es uns, den Wert auf through zu setzen.
‫Und dann auch, wenn du es dir ansiehst, denn das ist etwas, das ich nicht angerührt habe.
‫Es ist eigentlich der Wortbildungsfehler.
‫Also müssen wir diesen Button hier loswerden.
‫Aber wir haben es noch nicht behandelt oder berührt, was wie folgt ziemlich wichtig ist.
‫Sie können also sehen, dass wir diesen Trigger haben und der besagt, dass die Eigenschaft der Mouseover-Wert ist.
‫Wahr.
‫Und es wird ausgelöst, wenn das meiste vorbei ist, was wird es tun?
‫Nun, es wird Eigenschaften wie die Schriftgröße auf dreißig setzen.
‫Und lassen Sie mich Ihnen noch einmal zeigen, OK, ich sehe es.
‫Aber wenn ich die Schaltfläche jetzt verlasse, können Sie sehen, wie sie sich zurück ändert, und dies wird von dieser Abhängigkeitseigenschaft
‫erledigt.
‫Es informiert also darüber, was vor sich geht und was es verkauft, indem es den Wert der Schriftgröße auf seinen
‫ursprünglichen Wert zurücksetzt.
‫Wie Sie sehen können, gilt dies nur, während die Maus darüber ist, und dies ist durch Abhängigkeitseigenschaften möglich.
‫Nun noch etwas zu Abhängigkeitseigenschaften, denn ich sagte, sie sollten immer statisch und schreibgeschützt sein, und
‫das liegt daran, dass alle Steuerelemente gemeinsam genutzt und verfügbar sein sollten.
‫Sie möchten also nicht, dass ein Steuerelement nur einmal verfügbar ist.
‫Sie möchten auch, dass es für andere Klassen und andere Ansichten usw. verfügbar ist.
‫Und es ist statisch, weil der Wert nach der Initialisierung nicht geändert werden sollte.
‫Und diese Kettenbenachrichtigung, der Trigger für Abhängigkeitseigenschaften, wird für das Data Mining, für Animationen, für Trigger, wie wir hier
‫gesehen haben, für das Styling und so weiter benötigt.
‫Wenn Sie jetzt Ihre eigene Abhängigkeitseigenschaft erstellen möchten, können Sie dies für lange Zeit tun.
‫Also werde ich hier eine neue Eigenschaft in dieser Klasse erstellen.
‫Ich nenne es, eigentlich, legen wir es oben drauf.
‫Ich nenne es öffentlich und mein Eigentum.
‫Und wie gesagt, dies ist eine C LR-Eigenschaft.
‫Und hier muss ich ein Get und ein Set haben.
‫Aber das wird nicht reichen.
‫Ich gehe nur auf die im zweiten.
‫Lassen Sie uns eine Abhängigkeitseigenschaft für meine Eigenschaft erstellen.
‫Also werde ich
‫eine öffentliche statische schreibgeschützte Abhängigkeitseigenschaft namens meine Abhängigkeitseigenschaft Abhängigkeitseigenschaft erstellen.
‫Und dieser sollte sofort mit der Abhängigkeitseigenschaft Punktregister initialisiert werden.
‫Wir registrieren also eine neue Abhängigkeitseigenschaft und müssen mehrere Dinge zuweisen.
‫Zum Beispiel benötigen wir einen String-Namen.
‫Ich werde es einfach anrufen.
‫Meine Immobilie, dann brauchen wir einen Immobilientyp, von welchem Typ soll diese Immobilie sein?
‫Und wie wir hier gesehen haben, ist das Eigentum, das mein Eigentum ist, vom Typ.
‫Also werde ich als nächstes type of type von int verwenden.
‫Wir müssen den Eigentümer eingeben.
‫Der Besitzer des Typs und der Besitzer dieses Typs meiner Eigenschaft ist also meine Hauptfensterklasse, weil sie im Hauptfenster
‫ohne Klasse ist.
‫Wir sagen also einfach, dass der Typ des Hauptfensters sein wird, und jetzt müssen wir auch die Eigenschaftsmetadaten übergeben.
‫Ich werde also neue Eigenschaftsmetadaten erstellen, die null sein werden.
‫Also gebe ich hier einfach Null ein.
‫Nichts Besonderes da und das wars.
‫So können wir eine Abhängigkeitseigenschaft erstellen.
‫Und nun soll natürlich auch meine Eigenschaft selbst von dieser Abhängigkeitseigenschaft beeinflusst werden.
‫Und um das zu tun, muss ich das Get und Set anpassen.
‫Geter sollte also unseren Get-Wert, meine Abhängigkeitseigenschaft, zurückgegeben werden.
‫Aber jetzt haben wir das Problem, dass der Wert der Abhängigkeitseigenschaft vom Typ Abhängigkeitseigenschaft ist.
‫Und obwohl wir gesagt haben, dass es vom Typ int ist, müssen wir das immer noch darauf umwandeln, dass es darin ist.
‫Also werde ich es in eine ganze Zahl umwandeln und jetzt können wir fortfahren und die Anweisung tatsächlich fast
‫zerstreuen.
‫Rechts.
‫Besser gesagt.
‫Und jetzt sollte der Setter Wert eingestellt werden.
‫Und hier setze ich meine Abhängigkeitseigenschaft auf den angegebenen Wert.
‫Das ist, was wir hier tun, und so können Sie Ihre eigene Abhängigkeitseigenschaft erstellen.
‫Das ist also das Wichtigste.
‫Statischer Nur-Lese-Modus Sie müssen ihn als Abhängigkeitseigenschaftstyp erstellen.
‫Sie können ihm einen Namen geben, dann müssen Sie ihn registrieren und ihm einen Namen und einen Typ geben.
‫Und wo der Eigentümer ist oder was die Eigentümer der Klasse sind, in der die Eigenschaft erstellt wurde.
‫Und dann müssen Sie einige Eigenschaftsmetadaten übergeben, damit Sie einige zusätzliche Eigenschaftsmetadaten hinzufügen können.
‫Wie Sie sehen, gibt es vier verschiedene Overlords, und Sie können ein Objekt übergeben,
‫was der Standardwert ist, und ich sage nur, OK, Standardwert Null.
‫Daher wird meine Property aufgrund meiner Property-Metadaten, die ich hier eingerichtet habe, standardmäßig auf Null gesetzt.
‫Alles klar.
‫Also viel Zeug hier.
‫Und je nachdem, was Sie entwickeln möchten, erstellen Sie möglicherweise nie Ihre eigene Abhängigkeitseigenschaft.
‫Also keine Sorgen.
‫Wenn Sie an einem Punkt Abhängigkeitseigenschaften verwenden müssen, sehen Sie sich einfach an, wie Sie Ihre eigenen erstellen.
‫Andernfalls können Sie einfach die Eigenschaften verwenden, die wir hier hatten.
‫Und für einen Endbenutzer oder sagen wir für einen Entwickler, der nur die Benutzeroberfläche erstellt und diese nicht so relevant sein
‫wird.
‫Aber ich wollte Ihnen nur zeigen, wie die Dinge aufgebaut sind und worauf es hier ankommt.
‫Gut.
‫Wir sehen uns also im nächsten Video.