簡體   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