Ich komme von Flex, wo Sie fast alles in geschweiften Klammern tun können. Ich versuche, ein TextBlock
zu erhalten, um das heutige Datum und die heutige Zeit anzuzeigen, ohne es nur in C # zu codieren. Ich habe viele verschiedene Varianten der folgenden ohne Glück versucht.
Ich weiß, ich könnte wahrscheinlich einfach eine Eigenschaft MyDate
setzen und an diese binden, aber warum kann ich nicht direkt an die Eigenschaft DateTime.Now
binden?
Die Bindung in Silverlight erfordert ein Source-Objekt oder ein Dependency-Objekt. Von diesem Quellobjekt können Sie an Eigenschaften binden (daher sind Sie per Definition an Instanzelemente gebunden) oder an Abhängigkeitseigenschaften.
Da DateTime.Now
eine statische Eigenschaft ist, die Sie nicht direkt an Silverlight binden können, ist Code erforderlich. Die nächste beste Sache ist es, Code zu verwenden: -
Daher können wir analysieren, dass wir zwei Dinge brauchen.
Um das erste Element zu behandeln, würde ich eine Klasse StaticSurrogate
erstellen, wo ich Instanzeigenschaften für die statischen Eigenschaften erstellen würde, auf die wir zugreifen müssen: -
Jetzt brauchen wir eine Möglichkeit, eine Date-Zeit zu formatieren. Ein Wertkonverter ist das richtige Werkzeug für diesen Job und entlehnt stark von diesem Tim Heuer Blog : -
%Vor%Mit diesen beiden Klassen können wir nun den Rest in Xaml erledigen. Zuerst brauchen wir Instanzen dieser Klassen in unseren Ressourcen: -
%Vor% Jetzt können wir die TextBlock
: -
Beachten Sie, dass dieser Ansatz folgende Vorteile bietet: -
StaticSurrogate
hinzugefügt werden. Selbst wenn Sie DateTime.Now in Silverlights XAML deklarieren könnten (da Sie in WPF - Ссылка ), Sie haben das Problem, dass Ihre Zeit nicht aktualisiert wird. Wenn Sie einen lokalen Timer verwenden, der sich in der Sekunde aktualisiert, können Sie sicherstellen, dass Ihre Zeit ebenfalls aktualisiert wird.
%Vor%Deklarieren Sie eine Instanz in xaml ala:
%Vor%und verwenden Sie die Bindung, um sicherzustellen, dass Ihre Zeit immer reflektiert wird.
%Vor%Die Bindung in Silverlight erfordert ein Source-Objekt oder ein Dependency-Objekt. Von diesem Quellobjekt können Sie an Eigenschaften binden (daher sind Sie per Definition an Instanzelemente gebunden) oder an Abhängigkeitseigenschaften.
Da %code% eine statische Eigenschaft ist, die Sie nicht direkt an Silverlight binden können, ist Code erforderlich. Die nächste beste Sache ist es, Code zu verwenden: -
Daher können wir analysieren, dass wir zwei Dinge brauchen.
Um das erste Element zu behandeln, würde ich eine Klasse %code% erstellen, wo ich Instanzeigenschaften für die statischen Eigenschaften erstellen würde, auf die wir zugreifen müssen: -
%Vor%Jetzt brauchen wir eine Möglichkeit, eine Date-Zeit zu formatieren. Ein Wertkonverter ist das richtige Werkzeug für diesen Job und entlehnt stark von diesem Tim Heuer Blog : -
%Vor%Mit diesen beiden Klassen können wir nun den Rest in Xaml erledigen. Zuerst brauchen wir Instanzen dieser Klassen in unseren Ressourcen: -
%Vor%Jetzt können wir die %code% : -
verdrahten %Vor%Beachten Sie, dass dieser Ansatz folgende Vorteile bietet: -
Ich komme von Flex, wo Sie fast alles in geschweiften Klammern tun können. Ich versuche, ein %code% zu erhalten, um das heutige Datum und die heutige Zeit anzuzeigen, ohne es nur in C # zu codieren. Ich habe viele verschiedene Varianten der folgenden ohne Glück versucht.
%Vor%Ich weiß, ich könnte wahrscheinlich einfach eine Eigenschaft %code% setzen und an diese binden, aber warum kann ich nicht direkt an die Eigenschaft %code% binden?
Selbst wenn Sie DateTime.Now in Silverlights XAML deklarieren könnten (da Sie in WPF - Ссылка ), Sie haben das Problem, dass Ihre Zeit nicht aktualisiert wird. Wenn Sie einen lokalen Timer verwenden, der sich in der Sekunde aktualisiert, können Sie sicherstellen, dass Ihre Zeit ebenfalls aktualisiert wird.
%Vor%Deklarieren Sie eine Instanz in xaml ala:
%Vor%und verwenden Sie die Bindung, um sicherzustellen, dass Ihre Zeit immer reflektiert wird.
%Vor%Tags und Links silverlight binding date xaml textblock