zu verwenden Ich habe ein Powershell-Skript lesen eine XAML-Datei und diese anzeigen. Wenn ein Bild in der XAML-Datei wie:Wie relativer Pfad in Xaml einer Powershell
<Image Source="D:\Test\MyPic.png" />
Ich habe den absoluten Pfad zur Verfügung zu stellen. Gibt es eine Syntax, die den relativen Pfad erlaubt? Hack Lösung: Lesen Sie XAML und ersetzen Sie "D: \ Test" mit Pfad Strommodul in einer dynamischen Art und Weise in der Powershell-Skript
Added Beispiel Frage zu klären:
Add-Type -assemblyName PresentationFramework, PresentationCore, WindowsBase
$syncHash = [hashtable]::Synchronized(@{})
$newRunspace =[runspacefactory]::CreateRunspace()
$newRunspace.ApartmentState = "STA"
$newRunspace.ThreadOptions = "ReuseThread"
$newRunspace.Open()
$newRunspace.SessionStateProxy.SetVariable("syncHash",$syncHash)
$psCmd = [PowerShell]::Create().AddScript({
[xml]$xaml = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="Window" Title="Initial Window" WindowStartupLocation = "CenterScreen">
<Image Source="D:\Test\MyPic.png" />
</Window>
"@
$reader=(New-Object System.Xml.XmlNodeReader $xaml)
$syncHash.Window=[Windows.Markup.XamlReader]::Load($reader)
$syncHash.Window.ShowDialog() | Out-Null
})
$psCmd.Runspace = $newRunspace
$data = $psCmd.BeginInvoke()
Bitte beachten Sie: Das XAML ist nicht eingebettet. Powershell liest es dynamisch.
dies genau funktioniert nicht. Ich denke, weil es in einer Powershell ausgeführt wird. – Vik
Ich habe das bearbeitet, versuche es jetzt :) –
Danke für die Idee. Dies ist der Workaround-Hack, den ich zu vermeiden versuche. Ich habe ein kleines Beispiel hinzugefügt, um meine Frage zu klären – Vik