Caros profissionais do WPF e do PowerShell,
Estou trabalhando em um módulo PowerShell (Core, 7) que terá uma GUI WPF. Quero organizar o código de uma maneira melhor, dividindo o XAML, por exemplo Styles.xaml
, Colors.xaml
e Templates.xaml
.
O código consiste em vários ps1
arquivos que são montados em um psm1
arquivo de módulo durante a compilação. Ao lado do arquivo de módulo, coloco o psd1
bem como o UI
diretório, contendo todos xaml
os arquivos:
\_ HIWE (the module)
|_ HIWE.psm1
|_ HIWE.psd1
\_ UI
|_ App.xaml
|_ Colors.xaml
|_ Styles.xaml
\_ Templates.xaml
As App.xaml
referências ao mesmo diretório como App.xaml
:
<Application xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Colors.xaml"/>
<ResourceDictionary Source="Styles.xaml"/>
<ResourceDictionary Source="Templates.xaml"/>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
Emitir
Então, como um módulo instalado, dependendo se está instalado como escopo CurrentUser ou AllUsers, isso acabaria em caminhos diferentes.
Parece que o [System.Windows.Markup.XamlReader]::Load($appXmlReader)
não está usando a referência relativamente do local do App.xaml
mas do cwd da execução. Isso tornaria necessário colocar no diretório de forma absoluta, o que não é possível devido aos diferentes locais onde ele pode ser instalado.
Não é esse o problema a ser referenciado UI\filename.xaml
, é o que eu já testei.
Pergunta
Como você resolve esse problema quando quer dividir seu código WPF/XAML de forma eficaz e não quer acabar em um arquivo enorme?