У меня есть небольшой опыт работы с PowerShell
, но не с WPF
. Следующий код прекрасно работает в PowerShell
и запускает файл jpg
в окне:
Param (
[String]$FilePath = "C:\SplashScreen.jpg"
)
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"
x:Name="Window" Title="Initial Window"
WindowStartupLocation = "CenterScreen"
WindowStyle = "None"
ResizeMode = "NoResize"
SizeToContent = "WidthAndHeight">
<Image Source="$FilePath" />
<!-- Button to close on Esc -->
</Window>
"@
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$window = [Windows.Markup.XamlReader]::Load($reader)
$window.Activate()
$window.ShowDialog()
Единственное, что мне нужно добавить, - это закрытие диалога при нажатии клавиши escape
,Следующий код делает именно это:
<Window.CommandBindings>
<CommandBinding Command="Close" Executed="OnCloseCmdExecuted" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Command="Close" Key="Escape" />
</Window.InputBindings>
private void OnCloseCmdExecuted(object sender, ExecutedRoutedEventArgs e)
{
this.Close();
}
Или вот этот:
public MainWindow()
{
InitializeComponent();
this.PreviewKeyDown += new KeyEventHandler(HandleEsc);
}
private void HandleEsc(object sender, KeyEventArgs e)
{
if (e.Key == Key.Escape)
Close();
}
Куда бы я ни поместил код в XML
, он никогда не работает и выдает ошибку. Как это можно добавить?