Подключение внешних ресурсов

Последнее обновление: 19.12.2022

Чтобы не захламлять разметку xaml определением ресурсов, особенно когда этих ресурсов много, их можно выносить в отдельные файлы и при необходимости подключать. Если подобные ресурсы представляют стили, то по умолчанию в проекте .NET MAUI уже имеется для хранения таких файлов каталог Resources/Styles. Можно использовать эту папку, можно создать другую, учитывая, что ресурсы не сводятся только к стилям. Но в данном случае для примера для хранения своих ресурсов создадим в проекте новую папку, которую назовем MyResources. Добавим в нее два xaml-файла, которые назовем GreenButtonStyle.xaml и BlueButtonStyle.xaml

Для создания словарей ресурсов Visual Studio предоставляет встроенный шаблон .NET MAUI ResourceDictionary (XAML):

Добавление словарей ресурсов ResourceDictionary .NET MAUI и C#

Но в реальности можно просто добавить текстовые файлы с расширением .xaml.

Если мы воспользовались шаблоном .NET MAUI ResourceDictionary (XAML) для добавления файлов, то по умолчанию вместе с файлами xaml Visual Studio добавляет связанные с этими файлами файлы с кодом C#, которые в данном случае называются GreenButtonStyle.xaml.cs и BlueButtonStyle.xaml.cs и которые призваны содержать некоторую связанную с инициализацией словарей логику. Они в данном случае не нужны, поэтому удалим их.

словари ресурсов ResourceDictionary .NET MAUI и C#

В файле GreenButtonStyle.xaml определим стиль зеленой кнопки:

<?xml version="1.0" encoding="utf-8" ?>
<ResourceDictionary xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
    <Style x:Key="greenButtonStyle" TargetType="Button">
        <Setter Property="TextColor" Value="#004D40" />
        <Setter Property="BackgroundColor" Value="#80CBC4" />
        <Setter Property="Margin" Value="10" />
    </Style>
</ResourceDictionary>

Здесь в словаре ресурсов определен один ресурс - стиль с ключом "greenButtonStyle", но естественно при необходимости мы можем определить и другие ресурсы.

В файле BlueButtonStyle.xaml определим стиль синей кнопки:

<?xml version="1.0" encoding="utf-8" ?>
<ResourceDictionary xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
    <Style x:Key="blueButtonStyle" TargetType="Button">
        <Setter Property="TextColor" Value="#01579B" />
        <Setter Property="BackgroundColor" Value="#81D4FA" />
        <Setter Property="Margin" Value="10" />
    </Style>
</ResourceDictionary>

Здесь в словаре ресурсов определен ресурс с ключом "blueButtonStyle". Теперь подключим эти ресурсы на страницу в коде xaml:

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="HelloApp.MainPage">
    <ContentPage.Resources>
        <ResourceDictionary Source="MyResources/GreenButtonStyle.xaml" />
        <ResourceDictionary Source="MyResources/BlueButtonStyle.xaml" />
    </ContentPage.Resources>
    <StackLayout Padding="20">
        <Button Text="iOS" Style="{StaticResource blueButtonStyle}" />
        <Button Text="Android" Style="{StaticResource greenButtonStyle}" />
    </StackLayout>
</ContentPage>

Для подключения внешних ресурсов в коллекцию ресурсов страницы добавляются словари ресурсов - элементы ResourceDictionary. У каждого словаря устанавливается атрибут Source, который указывает на расположение файла ресурсов.

Для теста на странице определены две кнопки, которые используют подключенные ресурсы

Подключение внешних ресурсов в приложении на .NET MAUI и C#

Подобным образом можно подключать словари ресурсов не только на страницу, но и в другие элементы.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850