【发布时间】:2011-07-12 06:46:28
【问题描述】:
我们创建了一些很棒的 PowerShell 脚本。但随着时间的推移,我们将脚本提供给了非程序员。所以我们决定是时候为 PowerShell 提供一个简单易懂的 GUI。
我看过 James Brundage 的第 9 频道视频。他的视频很好地解释了窗口、堆栈面板、文档面板、网格、标签和文本框。 但是,总共有 60 多个控件。不知道 WPF 没有帮助。
我想做的是能够做到以下几点:
文本输入
下拉列表
单选按钮组
复选框组
我想出了一个可以完成前三个但有错误的示例。
Radio 控件直观地显示选择的第一个按钮,但是当我拉取组的值时它不正确。
我找不到复选框的示例。
任何提示将不胜感激。
这是我在 PowerShell 中对 WPK 的测试:
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"
}
}
}
}
【问题讨论】:
-
单选按钮有什么问题?我什么都看不到。
-
bernd,当我尝试取回选定的按钮时,它并没有给我我选择的那个。
-
我测试了所有 e 案例的初始状态,中间,右侧,左侧单选按钮和“调用 PS 脚本”给出: Radio => First, Radio => First, Radio => Third, Radio => First .您是否始终获得相同的值,还是获得不同但错误的值?
-
我相信无论我检查什么,我都只得到了第一个值。我将不得不重新审视这段代码,因为我使用了一个下拉列表来解决这个问题。虽然如果可以的话,我希望能够使用收音机。