<ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>


      1. 使用Xaml創(chuàng)建應(yīng)用界面

        打開visual studio,創(chuàng)建一個(gè)新的項(xiàng)目,在已安裝模板中選擇Visual C# →Wpf應(yīng)用。

        完成創(chuàng)建后,我們得到如下圖所示的應(yīng)用界面。



        


        wpf界面是基于xaml語言設(shè)計(jì)的,但是無需學(xué)習(xí)xaml,也可以用工具箱中的各種控件拖拽出不錯(cuò)的布局(就像拖拽winform的控件一樣)。再配合屬性面板,修改各個(gè)控件的屬性,很容易就得到一個(gè)還看得過去的GUI界面。




        

        保存項(xiàng)目。在項(xiàng)目的目錄下找到MainWindows.xaml,將其復(fù)制一份,這個(gè)xaml文件將會(huì)成為powershell腳本應(yīng)用的GUI布局文件。

      ## 2. 編寫powershell腳本

        新建powershell腳本。

        首先引用wpf framework/core程序集,使得powershell腳本具備創(chuàng)建wpf應(yīng)用的能力。
      Add-type -AssemblyName presentationframework, presentationcore
        接著創(chuàng)建wpf對(duì)象。
      $wpf = @{ }
      ?

        在腳本中讀入xaml文件
      $x = Split-Path -Parent $MyInvocation.MyCommand.Definition $path = $x + "
      .\MainWindow.xaml" $inputXAML = Get-Content -Path $path $inputCleanXAML =
      $inputXAML -replace 'mc:Ignorable="d"','' -replace "x:N",'N' -replace 'x:Class="
      .*?"','' -replace 'd:DesignHeight="\d*?"','' -replace 'd:DesignWidth="\d*?"',''
        幾個(gè)說明:

        $x是該powershell腳本所在文件夾的絕對(duì)路徑,我將MainWindows.xaml放在與powershell腳本同級(jí)的文件夾下,使用
      $MyInvocation.MyCommand.Definition獲取當(dāng)前運(yùn)行腳本所在路徑, Split-Path -Parent
      $MyInvocation.MyCommand.Definition即可獲得當(dāng)前運(yùn)行腳本所在的文件夾路徑。

        由于powershell只支持對(duì)xml的解析,所以需要對(duì)xaml稍微修改一下,使用-replace批量替換掉多余的字符。
      $inputCleanXAML = $inputXAML -replace 'mc:Ignorable="d"','' -replace "x:N",'N'
      -replace 'x:Class=".*?"','' -replace 'd:DesignHeight="\d*?"','' -replace
      'd:DesignWidth="\d*?"',''
      ?

        所有的xaml文件都可以使用這條語句來替換成xml。

        緊接著使用xmlReader解析xml,創(chuàng)建窗體。
      [xml]$xaml = $inputCleanXAML $reader = New-Object System.Xml.XmlNodeReader
      $xaml $tempform = [Windows.Markup.XamlReader]::Load($reader)
        遍歷完xml的節(jié)點(diǎn)后,調(diào)用$wpf.MainWindow.ShowDialog()就可以顯示GUI窗體了。

        此時(shí)我們點(diǎn)擊窗體的按鈕,窗體還不會(huì)有反應(yīng),接下來添加交互邏輯。

        添加如下語句
      $wpf.Confirm.add_Click({ #TODO... })
       ?。ㄔ趬K內(nèi)添加單擊按鈕時(shí)你所需要執(zhí)行的邏輯。)

        注意:我在創(chuàng)建wpf引用界面時(shí),創(chuàng)建了一個(gè)名為“Confirm”的按鈕,所以這里的add_Click({})對(duì)應(yīng)的就是該按鈕的點(diǎn)擊時(shí)引發(fā)的事件。

        保存powershell腳本文件,點(diǎn)擊運(yùn)行,我們即可以得到一個(gè)GUI程序了,如下圖:



      ?


        這個(gè)powershell腳本是我寫的一個(gè)文本解析器,先點(diǎn)擊More...按鈕打開文件選擇框,選擇一個(gè)*.mod的文本文件,然后點(diǎn)擊確定生成按鈕獲得變量列表--一個(gè)csv文件。

        你可以在*https://github.com/Afuness/PowershellLab/tree/master/GUI*獲取源代碼。

      友情鏈接
      ioDraw流程圖
      API參考文檔
      OK工具箱
      云服務(wù)器優(yōu)惠
      阿里云優(yōu)惠券
      騰訊云優(yōu)惠券
      京東云優(yōu)惠券
      站點(diǎn)信息
      問題反饋
      郵箱:[email protected]
      QQ群:637538335
      關(guān)注微信

        <ul id="qxxfc"><fieldset id="qxxfc"><tr id="qxxfc"></tr></fieldset></ul>
          亚洲欧美午夜精品 | 国产综合色网 | 美女把尿口扒开让男人爽视频 | 情欲办公室h | 国产又大又粗又长 | 日韩精品123 | 亚洲精品网站 在线播放glf | 啊┅┅快┅┅用力啊岳电影 | 五月丁香性爱 | 色播综合网 |