PowerShell 메모 GUI 입력 화면 표시 (XAML)

9533 단어 GUIXamlPowerShellWPF

개요



GUI의 입력 화면을 표시하는 샘플.


코드


Add-Type -AssemblyName PresentationFramework
[xml]$xaml = @'
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="入力画面">
<StackPanel>
  <TextBlock Text="日付を入力↓" />
  <StackPanel Orientation="Horizontal">
    <DatePicker Name="cal" />
    <TextBlock Text="{Binding ElementName=cal, Path=SelectedDate, StringFormat='選択した日付:yyyy/MM/dd', Mode=OneWay}" Margin="20,0,0,0" />
  </StackPanel>
  <TextBlock Text="テキストを入力↓" Margin="0,10,0,0" />
  <TextBox Name="inTxt" Text=""/>
  <CheckBox Name="chk" Content="チェック" IsChecked="True" Margin="0,10,0,0" />
  <Button Name="okButton" Content="OK" IsDefault="True" Margin="0,10,0,0" />
  <TextBlock Name="errTxt" Text="" Foreground="Red" Margin="0,20,0,0" />
</StackPanel>
</Window>
'@
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$window = [Windows.Markup.XamlReader]::Load($reader)

$calendar1 = $window.FindName("cal")
$inputText1 = $window.FindName("inTxt")
$checkbox1 = $window.FindName("chk")
$btn1 = $window.FindName("okButton")
$errorText1 = $window.FindName("errTxt")

# カレンダーの初期設定(過去の日付を選択不可にする)
$calendar_loaded = $calendar1.add_Loaded
$calendar_loaded.Invoke({
  $calendar1.BlackoutDates.AddDatesInPast()
})

# 実行ボタン押下時の処理
$btn_clicked = $btn1.add_Click
$btn_clicked.Invoke({
  # 入力チェック
  if ($calendar1.SelectedDate -eq $null)
  {
      $errorText1.Text = "日付を入力してください。"
      return
  }
  if ($inputText1.Text -eq "")
  {
      $errorText1.Text = "テキストを何か入力してください。"
      return
  }

  # 入力値をコンソールに表示
  [string]$str1 = $calendar1.SelectedDate.ToString("yyyy/MM/dd")
  [string]$str2 = $inputText1.Text
  [string]$str3 = $checkbox1.IsChecked.ToString()
  Write-Host "日付:${str1}、テキスト:${str2}、チェック:${str3}" -BackgroundColor Blue
  # ウィンドウを閉じる
  $window.Close()
})

# ウィンドウ表示
$window.ShowDialog() > $null

실행 예





날짜를 선택.


날짜와 텍스트를 입력한 후 OK 버튼을 누릅니다.


대화 상자가 닫히고 콘솔에 메시지가 출력됩니다.


동작 확인한 환경


  • PowerShell V4 (Windows 8.1)
  • PowerShell V5 (Windows 10)
  • 좋은 웹페이지 즐겨찾기