Start Debugging
2018-04-18 Обновлено 2023-11-05 xamarinxamarin-forms Edit on GitHub

Начинаем работать с CSS в Xamarin Forms 3

Узнайте, как использовать Cascading StyleSheets (CSS) в Xamarin Forms 3, включая встраиваемые CDATA-стили и встраиваемые CSS-файлы.

В этой новой версии Xamarin Forms есть несколько нововведений, и одно из них - Cascading StyleSheets (CSS). Да, верно: CSS в XAML. Пока непонятно, насколько это окажется полезно и распространено - довольно много возможностей ещё отсутствует, - но, думаю, это будет приятным дополнением для тех, кто переходит из веб-разработки.

Сразу к делу - есть два способа добавить CSS в приложение:

И как только CSS подключен, вы используете его, указывая на XAML-элементе либо StyleClass, либо короткое свойство class.

Для примера сделаем несколько изменений в новом проекте Xamarin Forms на шаблоне master detail. Дальше: File > New project и обновите его до Xamarin Forms 3.

Сначала путь через CDATA. Допустим, мы хотим сделать элементы списка оранжевыми. Перейдите в ItemsPage и в XAML, выше тега <ContentPage.ToolbarItems>, добавьте:

<ContentPage.Resources>
    <StyleSheet>
        <![CDATA[

            .my-list-item {
                padding: 20;
                background-color: orange;
                color: white;
            }

        ]]>
    </StyleSheet>
</ContentPage.Resources>

Теперь нужно использовать новый класс .my-list-item. Найдите ItemTemplate вашего ListView и обратите внимание на StackLayout внутри - это наша цель. Уберите padding и примените класс так:

<StackLayout Padding="10" class="my-list-item">

Вот и всё.

Теперь рассмотрим второй подход - со встроенными CSS-файлами. Сначала создайте новую папку в приложении с именем Styles и в ней - новый файл about.css (в этой части стилизуем страницу About). После создания файла обязательно щёлкните правой кнопкой > Properties и установите Build action в Embedded resource; иначе работать не будет.

Теперь во view — AboutPage.xaml — добавьте следующий фрагмент сразу над элементом <ContentPage.BindingContext>. Это подключит наш CSS-файл к странице. Тот факт, что путь начинается с ”/”, означает, что он отсчитывается от корня. Можно указывать и относительные пути, опуская первый слэш.

<ContentPage.Resources>
   <StyleSheet Source="/Styles/about.css" />
</ContentPage.Resources>

А в CSS внесём небольшие изменения в заголовок приложения и кнопку learn more:

.app-name {
    font-size: 48;
    color: orange;
}

.learn-more {
    border-color: orange;
    border-width: 1;
}

Аккуратнее: font-size и border-width - простые (double) значения; не указывайте “px”, это не сработает и приведёт к ошибке. Полагаю, значения трактуются в DIP (device independent pixels). То же касается других свойств вроде thickness, margin, padding и так далее.

Теперь всё красиво и нарядно, но имейте в виду, что есть ограничения:

Полный список того, что поддерживается, а что нет, можно посмотреть в pull request этой возможности на GitHub. На случай, если что-то пойдёт не так / не заработает, исходный репозиторий с примером больше не доступен на GitHub, но сниппетов выше хватит для старта.

Comments

Sign in with GitHub to comment. Reactions and replies thread back to the comments repo.

< Назад