Как я могу указать библиотеке UI не следовать какой-либо теме, используемой приложением?
Вы можете добавить файл 'Resource Dictionary' в свой проект библиотеки UI. В файле 'dictionary.xaml' вы можете определить базовый стиль для элементов управления, который используется на страницах вашей библиотеки пользовательского интерфейса. Тогда на элементы управления не будет влиять стиль ресурса в основном проекте.
Например, я добавляю файл 'generic.xaml' в проект библиотеки UI и определяю стиль для кнопки, как показано ниже:
<ResourceDictionary
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ClassLibraryUI">
<Style TargetType="Button" BasedOn="{StaticResource ButtonRevealStyle}">
</Style>
</ResourceDictionary>
У меня есть «BlankPage1.xaml» в библиотеке пользовательского интерфейса.
<Page
x:Class="ClassLibraryUI.BlankPage1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:ClassLibraryUI"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="generic.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Page.Resources>
<Grid>
<Button Content="Hello UWP"></Button>
</Grid>
</Page>
В основном проекте я определил стиль для кнопки в 'App.xaml':
<Application
x:Class="AppUI.App"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:AppUI">
<Application.Resources>
<Style TargetType="Button">
<Setter Property="Foreground" Value="Red"></Setter>
<Setter Property="Background" Value="LightBlue"></Setter>
<Setter Property="Width" Value="200"></Setter>
<Setter Property="Height" Value="50"></Setter>
</Style>
</Application.Resources>
</Application>
На MainPage.xaml:
<StackPanel>
<Button Content="Navigate" Click="Button_Click"></Button>
<Frame x:Name="frame"></Frame>
</StackPanel>
В «MainPage.xaml.cs» я использую элемент управления Frame
для перехода к «BalnkPage1» в библиотеке пользовательского интерфейса.
Вы увидите, что кнопка «Navigate» на главной странице будет использовать стиль в «Application.Resources», но кнопка «BlankPage1» будет использовать стиль в своем собственном файле «generic.xaml».