将WPK用于PowerShell GUI

weixin_38055888 2019-09-12 03:21:07

我们创建了一些很棒的PowerShell脚本。但随着时间的推移,我们已经将脚本交给了非程序员。所以我们决定是时候为PowerShell简单易懂的GUI了。 我看过詹姆斯布伦戴奇的9频道录像。他的视频在解释Window,Stack-Panel,Doc-Panel,Grid,Labels和Textboxes方面做得非常出色。 但是总共有60多个控件。不知道WPF没有帮助。 我想什么做的是能够做到以下几点: 文本输入 下拉列表 单选按钮组 复选框组 我想出了,做了一个例子前三名但有bug。 无线电控制器直观地显示了第一个选择的按钮,但是当我拉出该组的值时,它是不正确的。 我找不到复选框的示例。 任何提示将不胜感激。 这是我在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" } } } }








...全文
114 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38068204 2019-09-12
  • 打赏
  • 举报
回复

更改到$Script:SelectedRadio在On_Click单选按钮的scriptblocks。
weixin_38081808 2019-09-12
  • 打赏
  • 举报
回复

要找出你的三个单选按钮已经被选中,你可以使用下面的表达式:如果你只有一个单选按钮组 if (($Window | Get-ChildControl 'One').IsChecked) { $SelectedRadioButton = '1' } elseif (($Window | Get-ChildControl 'Two').IsChecked) { $SelectedRadioButton = '2' } elseif (($Window | Get-ChildControl 'Three').IsChecked) { $SelectedRadioButton = '3' } ,没有必要指定一组名称。也不需要On_Click事件。您可以缩短新单选表达式: New-RadioButton -Name 'One' -Content "Pick first" -IsChecked $true New-RadioButton -Name 'Two' -Content "Pick two" New-RadioButton -Name 'Three' -Content "Pick three" 为了找到答案,无论是一个复选框: New-CheckBox -Name 'Uno' -Content "Uno" 检查完毕后,你也推断其器isChecked属性: Write-Host "Checkbox UNo => " ($Window | Get-ChildControl UNo).IsChecked
weixin_38066498 2019-09-12
  • 打赏
  • 举报
回复

据我了解,你想创建你写了一个PowerShell脚本的顶部的GUI。 我的意见是,你有两个技术解决方案。 您建立在Windows窗体,这是建立在GUI德.NET框架 您建立在WPF的顶部的GUI前一种方法的顶部的GUI,至极是一种新的方式来在德.NET框架构建GUI 在第一个解决方案,您可以直接用Visual Studio创建您的形式和“transform”,或与被称为Sapien公司工具创建“PrimalForms Community Edition”至极是一个免费的GUI构建PowerShell用户的工具。您可以构建GUI(如.NET开发者),并且该工具使用PowerShell语法生成Window Form代码。您只需在正确的位置(为每个事件脚本块生成的那个)调用脚本函数。这种解决方案适用于正常形式。 WPF解决方案是一个更新和特殊的专用于您想在表单中添加2D或3D图形或适应不同屏幕大小的情况。在此解决方案中,您必须构建表单的XAML表示(例如,使用visual studio 2010 Expess),然后将其加载到PowerShell中。此解决方案需要安装PowerShell 2.0和Framework 3.5以及特殊标志(-STA)才能启动PowerShell。对我来说,WPK模块就是用这个解决方案来构建的。 它也存在一种在PowerShell中创建图表的方法。 如果您对某个或其他解决方案感兴趣,请告诉我。 我希望它有帮助。 JP

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧