Кнопки строки заголовка UWP белого цвета, если установлены прозрачные - PullRequest
1 голос
/ 07 октября 2019

Windows 10 Build 18362. Не уверен, что ошибка Windows или нет, и в любом случае ищу решение.

Я думаю, у меня есть небольшая сложная проблема, которая требует процесса для воспроизведения. В конечном итоге происходит следующее:

enter image description here

Приложение использует системную строку заголовка (а не представление, расширенное до заголовка заголовка), и на моем компьютере:настройка системы, позволяющая выделить цвета в строке заголовка, отключена. Вот почему кнопки заголовков синие (цвет системного акцента), но фактическая строка заголовка черная. Что я ожидаю и что должно произойти (как я докажу), так это то, что кнопки заголовков (свернуть, развернуть, закрыть) должны быть черными, как и остальная часть строки заголовка.

Одна из первых вещейЯ попытался сделать, чтобы решить проблему (когда я впервые заметил это в моем реальном приложении), чтобы установить цвет фона кнопок прозрачным. Вот что происходит:

enter image description here

Полностью белый! Хорошо, теперь для воспроизводимого примера.

  • Создайте новое приложение UWP. Я использовал C #, и не уверен, что это имеет значение, но для полноты я рекомендую вам сделать то же самое.
  • Убедитесь, что вы отключили цвет акцента в строке заголовка в системных настройках
  • Запустите стандартную настройкуприложение и обратите внимание на поведение строки заголовка. Это ожидаемое поведение, так как кнопки заголовков черные (в темной теме). Вот почему я считаю, что то, что я испытываю, непреднамеренно
  • Я добавил акриловый эффект на страницу XAML, потому что думал, что это проблема. Похоже, что это не так, но просто для полноты используйте следующие XAML и C # (конечно, изменив App1 на имя вашего приложения):
<Page
    x:Class="App1.MainPage"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:App1"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Background="{ThemeResource SystemControlAcrylicWindowMediumHighBrush}">

    <Grid>

    </Grid>
</Page>
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices.WindowsRuntime;
using Windows.ApplicationModel.Core;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI;
using Windows.UI.ViewManagement;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;

// The Blank Page item template is documented at https://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409

namespace App1
{
    /// <summary>
    /// An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            this.InitializeComponent();

            ApplicationViewTitleBar formattableTitleBar = ApplicationView.GetForCurrentView().TitleBar;
            CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = false;
            formattableTitleBar.ButtonBackgroundColor = Colors.Transparent;
            formattableTitleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
        }
    }
}

Теперь вы должны увидетьчто у меня на втором скриншоте. Если вы закомментируете две строки в MainPage.xaml.cs, которые назначают цвета кнопок прозрачным, вы получите то, что я вижу на моем первом снимке экрана.

Я что-то упустил? Это ожидаемое поведение? Как сделать так, чтобы кнопки подписи постоянно следовали правилам?

1 Ответ

1 голос
/ 08 октября 2019

Я понимаю ваш вопрос, это поведение кажется странным.

В строке заголовка есть цветной слой , который похож на одежду, которую мы носим. Вы можете изменить цвет вашей одежды по своему желанию, но вы не можете изменить цвет людей.

Сама строка заголовка белая. Когда вы устанавливаете ButtonBackgroundColor в значение «Прозрачный», цветовой слой фактически становится прозрачным, показывая первоначальный цвет строки заголовка.

Поскольку в настоящее время вы являетесь темной темой, ButtonForegroundColor становится белым, что приводит кбелый фон и белый текст, который вы видите. Если вы установите TitleColor заголовка на Transparent, вы поймете, почему у TitleBar есть цветной слой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...