#

Wie muss man this in einer globalen statischen Methode ersetzen?

 

Ich habe eine lokale Methode eine globale, statische Funktion/Methode umgewandelt, damit ich die Methode überall aufrufen kann.

Leider ist beim Bilden einer StorageFile die Verwendung von this notwendig in this.BaseUri.

 

Frage:

Wie muss ich hier this ersetzen?

 

Lösung:

Umwandeln des this.BaseUri in Pfad-String mit anschliessendem UriKind

 

Die Verwendung von this innerhalb der Mainpage bezieht sich auf die aktuelle Instanz der Seite.

Oder anders gesagt: wenn die Seite Mainpage geöffnet wird, dann ist this genau dieses Objekt oder Klasse.

Insofern ist this.BaseUri einfach der absolute Datei-Pfad zu dieser Klasse im Filesystem. Man muss also ebenfalls den Pfad verwenden, wo man sich gerade als Datei befindet und von dort weiter rechnen.

 

Ausgabe Direktfenster:

new Uri("ms:appx///Assets/_Images/_Sys/icFolder.png",UriKind.RelativeOrAbsolute)

{ms:appx///Assets/_Images/_Sys/icFolder.png}

    AbsolutePath: "appx///Assets/_Images/_Sys/icFolder.png"

    AbsoluteUri: "ms:appx///Assets/_Images/_Sys/icFolder.png"

    Authority: ""

    DnsSafeHost: ""

    Fragment: ""

    Host: ""

    HostNameType: Unknown

    IdnHost: ""

    IsAbsoluteUri: true

    IsDefaultPort: true

    IsFile: false

    IsLoopback: false

    IsUnc: false

    LocalPath: "appx///Assets/_Images/_Sys/icFolder.png"

    OriginalString: "ms:appx///Assets/_Images/_Sys/icFolder.png"

    PathAndQuery: "appx///Assets/_Images/_Sys/icFolder.png"

    Port: -1

    Query: ""

    Scheme: "ms"

    Segments: {string[7]}

    UserEscaped: false

    UserInfo: ""

 

new Uri("ms:appx///Assets/_Images/_Sys/icFolder.png", UriKind.RelativeOrAbsolute));

 

Am Beispiel in der ausgelagerten Methode:

public async static Task <BitmapImage> load_SysImage(string sys_ImageName)

{

    //------------< fl_set_Setting() >------------

    StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri"ms:appx///Assets/_Images/_Sys/icFolder.png", UriKind.RelativeOrAbsolute));

    IRandomAccessStream fileStream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);

    BitmapImage bmpImage = new BitmapImage();

    bmpImage.SetSource(fileStream);

    return bmpImage;

    //------------</ fl_set_Setting() >------------

}

 

 

 

Im Fall der Anwendung als Dateien kann man this.BaseUri austauschen mit ms-appx:///Pfad als string mit einem anschließenden UriKind

 

Verwendung innerhalb von MainPage, wo this.BaseUri funktioniert

 

 

Referenz:

FrameworkElement.BaseUri Property

Der Basis-URI für ein Objekt zur XAML-Ladezeit.

https://msdn.microsoft.com/library/windows/apps/br208712

Beispiel:

CapturedPhoto.Source = new BitmapImage(new Uri(this.BaseUri, "Assets/placeholder-sdk.png"));

 

this ist die aktuelle Instanz der Klasse

Das this-Schlüsselwort verweist auf die aktuelle Instanz der Klasse und wird auch als Modifizierer des ersten Parameters einer Erweiterungsmethode verwendet.

https://msdn.microsoft.com/de-de/library/dk1507sz.aspx

 

Beipsiel BaseUri in MapLauncher

private static string baseUri = "bingmaps:?";

 

 

"The BaseUri must begin with http://, https://, ms-appx:///, or ms-appdata:///local/."

 

 

Mobile

.

123movies