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

问题描述 投票:0回答:2

在 Visual Studio 中,我创建了一个新的 PowerShell 脚本项目来为脚本构建 GUI。现在,了解其工作原理的概念很简单。

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

我命名了文本框和按钮(参见 xml)。当我尝试为按钮添加 click 事件处理程序 时,我在 VS 中收到此消息:文档项没有代码隐藏文件。在添加事件处理程序之前添加代码隐藏文件和类定义。

我在这里缺少什么? (或者,我看到用户从 VS 获取 xml 代码并直接在 PowerShell ISE/脚本中使用来开发 GUI。与使用 Visual Studio 相比,这是更好的途径吗?)

我不一定是在寻找解决方案的代码,而是更多地了解为 PowerShell 脚本构建 GUI 的概念。我想从按钮触发 PowerShell 代码,那么如何创建从按钮到代码执行的桥/链接。我多年来一直在编写脚本,但从未涉足 GUI 世界。所以这对我来说是新的。

enter image description here

enter image description here

enter image description here

编辑: 如果有人想开始这种类型的开发,这里有一个示例:

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 user-interface code-behind
2个回答
1
投票

这就是我的具体案例。 我放弃使用 Visual Studio for powershell,而是使用 Visual Studio Code 作为脚本或其他任何东西。 (我喜欢超级编辑,但这是偏好)

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

也有这样的情况,我刚刚找到了如何轻松处理事件,请随意看看 Powershell 注册 WPF 事件

另请注意,即使没有此功能,某些事件(例如单击)通常也很容易处理,$button.addclick() 将传递脚本块或函数。


0
投票

本文解释了问题是什么以及如何解决: https://forums.ironmansoftware.com/t/start-debugging-results-in-error/2934/11

© www.soinside.com 2019 - 2024. All rights reserved.