在 Visual Studio 中,我创建了一个新的 PowerShell 脚本项目来为脚本构建 GUI。现在,了解其工作原理的概念很简单。
在 GUI 中,我想在文本框中输入文件名,然后在单击按钮时使用在文本框中输入的文件名创建一个文件。
我命名了文本框和按钮(参见 xml)。当我尝试为按钮添加 click 事件处理程序 时,我在 VS 中收到此消息:文档项没有代码隐藏文件。在添加事件处理程序之前添加代码隐藏文件和类定义。
我在这里缺少什么? (或者,我看到用户从 VS 获取 xml 代码并直接在 PowerShell ISE/脚本中使用来开发 GUI。与使用 Visual Studio 相比,这是更好的途径吗?)
我不一定是在寻找解决方案的代码,而是更多地了解为 PowerShell 脚本构建 GUI 的概念。我想从按钮触发 PowerShell 代码,那么如何创建从按钮到代码执行的桥/链接。我多年来一直在编写脚本,但从未涉足 GUI 世界。所以这对我来说是新的。
编辑: 如果有人想开始这种类型的开发,这里有一个示例:
Add-Type -Assembly PresentationFramework
[xml]$xmlFile = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="250" Width="525">
<Grid>
<Label x:Name="lbl_Filename" Content="Filename" HorizontalAlignment="Left" Margin="68,38,0,0" VerticalAlignment="Top" Width="69" Height="23"/>
<Button x:Name="btn_CreateFile" Content="Create File" HorizontalAlignment="Left" Margin="294,64,0,0" VerticalAlignment="Top" Width="96"/>
<TextBox x:Name="txt_Filename" HorizontalAlignment="Left" Margin="68,66,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="185"/>
</Grid>
</Window>
"@
$xamlReader = (New-Object System.Xml.XmlNodeReader $xmlFile)
$xamlDialog = [Windows.Markup.XamlReader]::Load($xamlReader)
$btn_CreateFile = $xamlDialog.FindName("btn_CreateFile")
$txt_Filename = $xamlDialog.FindName("txt_Filename")
$btn_CreateFile.Add_Click({
$xamlDialog.Hide()
$txtstr_Filename = $txt_Filename.Text.ToString()
New-Item -Type File -Path "$($HOME)\$($txtstr_Filename)" | Out-Null
})
$xamlDialog.ShowDialog() | Out-Null
这就是我的具体案例。 我放弃使用 Visual Studio for powershell,而是使用 Visual Studio Code 作为脚本或其他任何东西。 (我喜欢超级编辑,但这是偏好)
至于 gui,我个人的建议是使用 c# 基本项目构建 gui,你只需打开它,将你预先存在的 xaml 放入其中,编辑它,复制粘贴它......
也有这样的情况,我刚刚找到了如何轻松处理事件,请随意看看 Powershell 注册 WPF 事件
另请注意,即使没有此功能,某些事件(例如单击)通常也很容易处理,$button.addclick() 将传递脚本块或函数。