Es ist mehr als ein Jahr her, seit ich den letzten Artikel geschrieben habe, und es gibt zu viele Dinge, die ich schreiben muss. Ich werde mich immer noch auf die damit verbundenen technischen Punkte konzentrieren In der Diskussion werden wir diesen Artikel besprechen. Das Wichtigste sind WPF-Abhängigkeitseigenschaften. Freunde, die damit in Kontakt gekommen sind, sollten ein wenig Verständnis dafür haben, aber bevor wir über WPF-Abhängigkeitseigenschaften sprechen, werfen wir einen Blick auf die Eigenschaften in .net wurden verwendet, bevor WPF erschien.
Häufige Attributprobleme
C#-Grundeigenschaften
Benutzerdefinierte ASP.NET-Steuerelementeigenschaften
Benutzerdefinierte WinForm-Steuerelementeigenschaften
Benutzerdefinierte Javascript-Steuerelementeigenschaften
C#-Grundeigenschaften
Namespace WPFControlTutorialPart2_Basic
{
Person der öffentlichen Klasse
{
private Zeichenfolge _name;
öffentlicher String-Name
{
get { return _name }
set { _name = value;
}
//automatische Eigenschaften
public int Age { get;
}
}
Die oben genannten Eigenschaften sollten als die grundlegendsten Attribute von C# angesehen werden und jeder ist mit ihnen vertraut.
Hinweis: Die Standardeigenschaften werden nicht initialisiert, da sonst viele unbekannte Fehler auftreten können.
(Sie können Folgendes lesen. Wenn Sie mit den folgenden Technologien in Kontakt gekommen sind, ist es eigentlich sehr einfach.)
Benutzerdefinierte ASP.NET-Steuerelementeigenschaften
Namespace WPFControlTutorialPart2_WebApp
{
öffentliche Klasse WebFromControl: WebControl
{
private Zeichenfolge _controlName;
öffentliche Zeichenfolge ControlName
{
erhalten
{
return _controlName;
}
Satz
{
_controlName = value;
}
}
protected override void RenderContents(HtmlTextWriter-Ausgabe)
{
Output.Write("Der Steuerelementname ist:"+ControlName);
}
}
}
Das Obige ist ein einfaches benutzerdefiniertes Webserver-Steuerelement.
Das asp.net-Steuerelement konzentriert sich auf das Rendern. Die RenderContents-Methode wird bei jeder Aktualisierung der Seite aufgerufen, sodass sie unabhängig davon, ob sich die Eigenschaften geändert haben oder nicht, erneut gerendert wird Änderungen, um das Neuzeichnen der Benutzeroberfläche zu benachrichtigen.
Hinweis: Wenn es zwingend erforderlich ist, dass das ControlName-Attribut einen Wert haben muss, um die Gültigkeit des Eingabeergebnisses sicherzustellen, kann dieser in der get-Methode verarbeitet werden.
erhalten
{
if (_controlName == null) _controlName = string.Empty;
return _controlName;
}
Benutzerdefinierte WinForm-Steuerelementeigenschaften
Wenn sich die Eigenschaft ändert, wird sie nicht neu gezeichnet. Sie müssen die Invalidate-Methode manuell aufrufen, um die OnPaint-Methode zum Neuzeichnen aufzurufen.
Hinweis: Wenn Sie die Schnittstelle neu zeichnen möchten, müssen Sie die Methode manuell aufrufen
Benutzerdefinierte JavaScript-Steuerelementeigenschaften
<div id="demoDiv" style="background-color: Red">Hallo</div>
<Skript>
Funktion ElementControl(elementName) {
this.element = document.getElementById(elementName);
}
ElementControl.prototype.setWidth = function(width) {
this.element.style.width = Breite;
}
var obj = new ElementControl("demoDiv");
obj.setWidth("Hallo");
</script>
JavaScript-Variablentypen haben keine starken Typen. Wenn Sie beispielsweise die Breite von dom festlegen, kann der Typ nur eine Ganzzahl sein. Wenn der Wert als Zeichenfolge übergeben wird, tritt ein Fehler auf (dies ist natürlich künstlich).
(Ich weiß nicht, ob Leute, die js Front-End-Steuerelemente erstellt haben, so denken. Das Definieren einer Eigenschaft und das anschließende Neuzuweisen und Neuzeichnen des Steuerelements ist eine schmerzhafte Sache. Es muss manuell angepasst werden und wirkt sich auf das gesamte Steuerelementdesign aus. )
Hinweis: Überprüfen Sie die Gültigkeit der Attributzuweisungen.
Aus den obigen Beispielen können wir ersehen, dass reine Attribute die Programmanforderungen nicht erfüllen können.
Die oben genannten Anforderungen sind notwendig, kommen häufig vor und kommen sehr häufig vor.
Standardisierte Lösungen
Das Obige führt eine Reihe von Problemen mit Attributen ein. Wenn es Probleme gibt, gibt es vereinfachte Lösungen.
Das Folgende ist eine persönliche Zusammenfassung:
Wenn eine Technologie relativ komplex ist, wird jemand eine Reihe von Standards definieren, um die Technologie zu vereinfachen und die Produktionseffizienz zu verbessern.
Egal wie sorgfältig der Designer darüber nachdenkt, sobald der Standard definiert ist, geht die Flexibilität verloren.
Standards können mit Ihren persönlichen Gewohnheiten in Konflikt geraten. Sie müssen lernen, Standards zu akzeptieren und zum WPF-Thema zurückzukehren. Dann ist die Lösung in WPF die Abhängigkeitseigenschaft (DependencyProperty).
Okay, dieser Artikel ist nur eine Einführung. Wenn Sie bei der Verwendung von Attributen auf diese Probleme gestoßen sind, werden Sie einige Gefühle haben.
Wenn Sie feststellen, dass die oben genannten Probleme tatsächlich bei Attributen bestehen, dann hat dieser Artikel seine Aufgabe erfüllt.
Dieser Artikel soll nicht erweitert werden. Im nächsten Artikel wird das WPF-Abhängigkeitseigenschaftensystem erneut vorgestellt.
Jeder ist willkommen, mitzudiskutieren.