2017-09-28 37 views
1

私はXAMLを使用してPowerShellでGUIを構築しています。プログラムで何が起こっているのかをテキストでGUIラベル/テキストを更新します。Powershell GUIラベルの変更

for($i in $array){ 
    if $i -eq "item"{ 
    add item to matcharray 
    } 
} 

例このコードを使用して、配列内の一致を検索します。 GUIのラベルには「一致する配列を検索する」と表示されます。次に、数学関数を実行するなど、コードの別の部分に移動します。 GUIは "Doing Math Functions"と言うでしょう。これまではボタンのクリックでGUIの更新を行うことができましたが、そのコードが実行されると更新されます。最低でも、タイマーで更新してください。私は自動的にラベルのテキストを変更する方法を探しています。ラベルを自動的に変更するコードのほんの一部が役立ちます。

答えて

0

あなたはこれを試しましたか?

$Label.Text = "Whatever you want your label to say here" 

コード内で実行する必要がある場合は、必要に応じて複数回追加できます。

+2

XAMLの場合、$ Label.Contentになります。 – cet51

+0

Yaですが、問題はGUIの更新に伴います。私はテキストを設定することができます。その後、私はテキストを変更する別の行を置く場合。 GUIは最初のセットのみを表示し、2番目のセットに更新されることはありません。 – Shawnzye

+0

テキストを更新した後でこれを行います: '[System.Windows.Forms.Application] :: DoEvents()'これは、フォームを更新してテキストを変更するよう強制します。私が持っているもの – cet51

1

これは実際にはここで少しのコードで非常に簡単です。 https://foxdeploy.com/functions/ise-snippets/xaml-to-gui/

この関数を使用して、WFPオブジェクトをPowershellオブジェクトにバインドし、それに応じて更新します。

$inputXML = @" 
XAML 
"@  

$inputXML = $inputXML -replace 'mc:Ignorable="d"','' -replace "x:N",'N' -replace '^<Win.*', '<Window' 

[void][System.Reflection.Assembly]::LoadWithPartialName('presentationframework') 
[xml]$XAML = $inputXML 

$reader=(New-Object System.Xml.XmlNodeReader $xaml) 
try { 
    $Form=[Windows.Markup.XamlReader]::Load($reader) 
} catch { 
    Write-Host "Unable to load Windows.Markup.XamlReader. Double-check syntax and ensure .net is installed." 
} 

$xaml.SelectNodes("//*[@Name]") | %{Set-Variable -Name "WPF$($_.Name)" -Value $Form.FindName($_.Name)} 

Function Get-FormVariables 
{ 
    if ($global:ReadmeDisplay -ne $true) { 
     Write-host "If you need to reference this display again, run Get-FormVariables" -ForegroundColor Yellow; $global:ReadmeDisplay=$true 
    } 
    write-host "Found the following interactable elements from our form" -ForegroundColor Cyan 
    get-variable WPF* 
} 

Get-FormVariables 

#Updates the XAML thing named "label1" 
$WPFlabel1.Text = "This is the starting value!" 

$WPFbutton1.Add_Click({ 
$WPFlabel1.Text = "This is the updated value!" 
}) 
$Form.ShowDialog() | out-null 

あなたはコードをAdd_Clickの中に置き、更新したテキストをどこにでも配置することができます。タイマーなどで

+0

良い投稿です。確かにそれは私がpowershellでXAMLを使うことを学んだ正確なスクリプトです:) – cet51

+0

ありがとう@CoryEtmund、私はちょうど最近のプロジェクトのために自分自身を学んだので、それは私の心に新鮮だった。私は間違いなくそのサイトのリソースなしでそれをしていない可能性があります。 –

+0

そのサイトは間違いなく便利でした。ビジュアルスタジオのWPFプロジェクトで初めてのXAMLフォームを作成しようとしていましたが、C#で多くの経験がありませんでした。私はPSでそれを行うことができ、その瞬間から非常に満足していることが分かった! – cet51

関連する問題