это мой первый пост. Я пишу приложение для запуска скриптов в Powershell со встроенным XAML-кодом для GUI. XAML был обработан в Visual Studio, затем экспортирован в Powershell и настроен вручную. Простой и понятный, но я застрял, пытаясь изменить значок в строке заголовка приложения. Изменение значка - это необходимость внутреннего брендинга.
Общий значок c Powershell появляется в строке заголовка моего приложения. И я думаю, что я пытался адаптировать каждую технику XAML и метода выделения кода, упомянутых на этом сайте и в других местах, чтобы установить мою собственную иконку ICO. Нет радости Некоторые требуют использования Visual Studio, к которому я надеюсь не go вернуться. Простейший предлагаемый маршрут XAML, похоже, добавляет строку, подобную этой ...
Icon="MyFavicon.ico"
... ниже строки заголовка на испытательном стенде ниже. Но это выдает эту ошибку:
Exception calling "Load" with "1" argument(s): "Failed to create a 'Icon' from the text 'StribLogoFavicon.ico'."
At M:\Scripting\Saxophone\Test\trivial_xaml_and_ps_for_icon_troubleshooting_v18.ps1:26 char:2
+ $Window = [Windows.Markup.XamlReader]::Load($Reader)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : XamlParseException
You cannot call a method on a null-valued expression.
At M:\Scripting\Saxophone\Test\trivial_xaml_and_ps_for_icon_troubleshooting_v18.ps1:28 char:1
+ $Window.ShowDialog()
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull
FWIW, тот же файл ICO ранее работал в строке заголовка HTA-версии этого проекта. Я также попробовал второй файл ICO.
Расположение файла ICO не критично для моих целей развертывания. Я пытался создать сценарий для папки root и подпапки.
Вот скелет моего проекта. Кто-нибудь может предложить решение? Может быть, мы сможем использовать этот стенд для документирования легко подтверждаемого. Спасибо!
#Trivial pared-down app GUI for icon troubleshooting
Add-Type -AssemblyName presentationframework, presentationcore, windowsbase
#Begin XAML code for GUI
[xml]$xaml = @"
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
x:Name="Demo_WPF_Window"
Title="How to change icon at left?" Height="150" Width="320" WindowStyle="SingleBorderWindow" Background="#FFECBD5A" ResizeMode="NoResize"
>
<Grid x:Name="Grid">
<Grid Margin="18,64,0,18">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="25*"/>
<ColumnDefinition Width="126*"/>
<ColumnDefinition Width="6*"/>
</Grid.ColumnDefinitions>
</Grid>
<Label x:Name="Label_Icon_testbed" Content="Icon is ICO file in same folder as PS1 script" HorizontalAlignment="Left" Height="45" Margin="19,10,0,0" VerticalAlignment="Top" Width="240" FontSize="11" FontWeight="Bold" Grid.ColumnSpan="2"/>
</Grid>
</Window>
"@
#Prepare the GUI
$Reader = New-Object System.Xml.XmlNodeReader $xaml
$Window = [Windows.Markup.XamlReader]::Load($Reader)
#Render the GUI
$Window.ShowDialog()