Quantcast
Channel: xlogI125’s blog
Viewing all articles
Browse latest Browse all 55

XamlReader

$
0
0
Set-StrictMode -Version Latest

Add-Type -AssemblyName PresentationFramework

$xaml=@'<Window Title="テスト" Width="600" Height="300"  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"><DockPanel><TextBox AcceptsReturn="True"      HorizontalScrollBarVisibility="Visible" VerticalScrollBarVisibility="Visible"      FontFamily="MS ゴシック" FontSize="16">テキストを入力してください</TextBox></DockPanel></Window>'@$window=[System.Windows.Markup.XamlReader]::Load(
  [System.Xml.XmlReader]::Create(
    [System.IO.StringReader]::new($xaml)
  )
) -as[System.Windows.Window]$window.ShowDialog()
Set-StrictMode -Version Latest

Add-Type -AssemblyName PresentationFramework

$btn=New-Object -TypeName System.Windows.Controls.Button -Property @{
  Width   =150
  Height  =75
  Content ="クリックしてください"
}

$tBox=New-Object -TypeName System.Windows.Controls.TextBox -Property @{
  HorizontalScrollBarVisibility =[System.Windows.Controls.ScrollBarVisibility]::Visible
  VerticalScrollBarVisibility   =[System.Windows.Controls.ScrollBarVisibility]::Visible
  AcceptsReturn                 =$true
  FontFamily                    =[System.Windows.Media.FontFamily]::new("MS ゴシック")
  FontSize                      =16
  Text                          ="テキストを入力してください"
}

$panel=[System.Windows.Controls.DockPanel]::new()
$panel.Children.Add($btn)
$panel.Children.Add($tBox)

$wnd=New-Object -TypeName System.Windows.Window -Property @{
  Width   =600
  Height  =300
  Title   ="テスト"
  Content =$panel
}

$hTextBoxTextChanged=[System.Windows.Controls.TextChangedEventHandler] {
  param([object]$s,[System.Windows.Controls.TextChangedEventArgs]$e)

  $btn.Content ="テキストが変更されました"
}

$hButtonClick=[System.Windows.RoutedEventHandler] {
  param([object]$s,[System.Windows.RoutedEventArgs]$e)

  $s.Content ="クリックされました"try {
    $xaml=$tBox.Text
    $stringReader=[System.IO.StringReader]::new($xaml)
    $xmlReader=[System.Xml.XmlReader]::Create($stringReader)
    $window=[System.Windows.Markup.XamlReader]::Load($xmlReader) -as[System.Windows.Window]$window.ShowDialog()
  }
  catch {
    $_|Write-Verbose -Verbose
  }
}

$tBox.Text =[System.Windows.Markup.XamlWriter]::Save($wnd) -replace"><",">`n<"$tBox.add_TextChanged($hTextBoxTextChanged)
$btn.add_Click($hButtonClick)

$wnd.ShowDialog()

Viewing all articles
Browse latest Browse all 55

Trending Articles