Frage

Nehmen wir an, dass in den App.cs - ich ein Feld der Klasse hinzufügen, würde die Anwendung darstellt. Kann ich das Feld von den Seiten der App zugreifen? Wenn ja, wie kann ich das tun? Sehe ich das richtig, dass, sobald dieses Mitglied Feld initialisiert übernehmen würde „am Leben“ für die Dauer der Anwendung der Laufzeit sein?

War es hilfreich?

Lösung

Sie können. im Grunde erhalten Sie nur die aktuelle Anwendung und werfen es auf App (oder was auch immer der Name der Klasse in Ihrer App.xaml ist). Hier ist ein Ausschnitt, dass demonstriert.

var myApp = Application.Current as App;
var n = myApp.NameOfPropertyAdded;

Ich bin nicht sicher, was Sie am Leben bedeuten. Ich gehe davon aus, dass Sie Sachen, um es binden möchten, und haben Ihre Bindungen aktualisieren, wenn es aktualisiert. Dazu müssen Sie die Eigenschaft Änderungsbenachrichtigung einrichten werden müssen.

Der Ansatz Eigenschaften der App.xaml.cs Datei des Hinzufügens riecht ein wenig komisch zu mir. Ich denke, dass der reccomended Ansatz, was die Anwendung als Anwendungsebene Ressource hinzuzufügen wäre, so dass Sie leicht in XAML verweisen können.

Andere Tipps

Wenn Sie vorhaben, diese Felder häufig zugreifen, kann es sinnvoll sein, eine Eigenschaft für die aktuelle Anwendung hinzuzufügen, entweder in Ihrem Ansichtsmodell oder Xaml.cs für die einfachen Zugriff später.

public Application CurrentApp
{
    get
    {
        return Application.Current as App;
    }
}

Dann auf Ihrer Seite, können Sie einfach Ihre Eigenschaft verweisen

CurrentApp.MyField;

Und ja, ein Feld oder eine Eigenschaft in Ihrem App.xamls.cs wird für die Lebensdauer der Anwendung sein um.

Wenn Sie das Feld, Eigenschaft, Methode statisch zu machen, dann können Sie darauf zugreifen mit

App.myField;
App.MyProperty;
App.MyMethod();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top