Wir haben einige großartige PowerShell-Skripte erstellt. Aber im Laufe der Zeit haben wir die Skripte an Nicht-Programmierer weitergegeben. Also haben wir beschlossen, dass es Zeit für eine einfache, leicht verständliche GUI für die PowerShell war.
Ich habe mir die Channel 9-Videos von James Brundage angesehen. In seinen Videos werden Window, Stack-Panel, Doc-Panel, Grid, Labels und Textboxen sehr gut erklärt. Insgesamt gibt es jedoch über 60 Steuerelemente. Wenn man WPF nicht kennt, ist das nicht hilfreich.
Ich würde gerne Folgendes tun können:
Texteingabe
Auswahlliste
RadioButton-Gruppe
Checkbox-Gruppe
Ich habe mir ein Beispiel ausgedacht, das die ersten drei Punkte erfüllt, allerdings mit Fehlern.
Das Optionsfeld zeigt visuell die erste ausgewählte Schaltfläche an, aber wenn ich den Wert für die Gruppe ziehe, ist er nicht korrekt.
Ich kann kein Beispiel für das Kontrollkästchen finden.
Für jeden Tipp wären wir dankbar.
Hier ist mein Test von WPK in PowerShell:
function TestGui {
Import-Module WPK
$SelectedRadio = "First"
New-Window -Title "Test User Input" -WindowStartupLocation CenterScreen `
-Width 400 -Height 300 -Show {
New-Grid -Rows 32*, 32*, 32*, 32* -Columns 100, 1* {
#create style to use on controls
$createLblStyle = @{
Margin = 5
HorizontalAlignment = "right"
VerticalAlignment = "center"
}
#Label Text for this row
New-TextBlock -Text "Pick fruit" `
-Row 0 -Column 0 @createLblStyle
# dropdown ( combo box)
New-ComboBox -Name FruitList `
-row 0 -column 1 @createLblStyle `
-Items { "Apple", "Pear", "Peach" } -SelectedIndex 0
#Label Text for this row
New-TextBlock -Text "Pick number" `
-Row 1 -Column 0 @createLblStyle
# TextBox
New-TextBox -Name TextInputName `
-Row 1 -Column 1 @createLblStyle
#Label Text for this row
New-TextBlock -Text "Get Text Input" `
-Row 2 -Column 0 @createLblStyle
#Do three radio buttons for this row.
New-StackPanel -Row 2 -Column 1 -Orientation Horizontal {
New-RadioButton -Content "Pick first" `
-GroupName Results -IsChecked $True -On_Click {
$SelectedRadio = "First"
}
New-RadioButton -Content "Pick two" `
-GroupName Results -On_Click {
$SelectedRadio = "Second"
}
New-RadioButton -Content "Pick three" `
-GroupName Results -On_Click {
$SelectedRadio = "Third"
}
}
New-Button -Content "_Call PS Script" -Row 3 -Column 0 -Margin 3 -On_Click {
$FruitList = $window | Get-ChildControl FruitList
$TextInputName = $Window | Get-ChildControl TextInputName
$Results = $Window | Get-ChildControl Results
$Window.Close()
write-host "call PS script with: "
write-host "DropDown => " $FruitList.SelectedValue
write-host "TextBox => " $TextInputName.Text
write-host "Radio => " $SelectedRadio
}
New-Button -Content "Cancel" -Row 3 -Column 1 -Margin 3 -On_Click {
$Window.Close()
write-host "Cancel was pressed"
}
}
}
}
0 Stimmen
Was ist das Problem mit der Optionsschaltfläche? Ich kann keine sehen.
0 Stimmen
Bernd, wenn ich versuche, die ausgewählte Schaltfläche zurückzubekommen, gibt sie mir nicht diejenige, die ich ausgewählt habe.
0 Stimmen
Ich habe alle Fälle getestet: Ausgangszustand, mittlere, rechte, linke Optionsschaltfläche und "Call PS Script": Radio => Erste, Radio => Erste, Radio => Dritte, Radio => Erste. Haben Sie immer den gleichen Wert erhalten oder haben Sie verschiedene, aber falsche Werte erhalten?
0 Stimmen
Ich glaube, ich habe immer nur den ersten Wert erhalten, egal was ich angekreuzt habe. Ich werde diesen Code überarbeiten müssen, da ich stattdessen eine Auswahlliste verwendet habe, um das Problem zu umgehen. Obwohl ich möchte die Fähigkeit haben, Radio zu verwenden, wenn ich kann.