繁体   English   中英

Visual Studio 消息:文档项没有代码隐藏文件。 (为 Powershell 构建 GUI)

[英]Visual Studio message: The document item has no code-behind file. (Building GUI for Powershell)

在 Visual Studio 中,我创建了一个新的 PowerShell 脚本项目来为脚本构建 GUI。 现在更容易理解这将如何工作的概念。

在 GUI 中,我想在文本框中输入文件名,然后在单击按钮时使用在文本框中输入的文件名创建文件。

我命名了文本框和按钮(参见 xml)。 当我尝试为按钮添加单击事件处理程序时,我在 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 用于 Powershell,而是将 Visual Studio 代码用于脚本或其他任何东西。 (我喜欢超编辑,但这是偏好)

至于 gui,我个人的建议是使用 c# 基本项目构建 gui,您只需打开它,将您预先存在的 xaml 放入其中,编辑它,复制粘贴它...

它也发生了,我刚刚发现了如何轻松处理事件,随意看看Powershell Register WPF events

还要注意,即使没有这个,像点击这样的事件通常也很容易处理,$button.addclick() 会传递一个脚本块或一个函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM