Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

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
»
C#: Umwandeln eines 2D Object Array to 2D String Array
»
Asp.Net C#: Optionale Parameter in Methode
»
Asp.Net C#: Bool Null zu bool
»
C#: Prüfen auf Enthält Zeichenfolge ohne Groß- Kleinscheibung
»
C#: Zeit formatieren in 24 Stunden Format
»
WPF: Datum und Zeit in String mit Format 24 Stunden ausgeben
»
C#: Item an Array oder List anfügen
»
C#: Split eines Textes mit String-Sequenzen zur Trennung
»
C#: Wait Loop umwandeln in Task.Delay
»
WPF, C#: Zeitdifferenz berechnen mit TimeSpan

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de