Почему заголовок TitleBar исчез после добавления эффекта acryli c? - PullRequest
0 голосов
/ 16 апреля 2020

Я использовал следующий код в MainPage.xaml.cs для добавления эффекта acryli c на TitleBar

public void AcrylicTitleBar()
    {
        CoreApplication.GetCurrentView().TitleBar.ExtendViewIntoTitleBar = true;
        var title = ApplicationView.GetForCurrentView();
        title.TitleBar.ButtonBackgroundColor = Colors.Transparent;
        title.TitleBar.ButtonInactiveBackgroundColor = Colors.Transparent;
        title.TitleBar.ButtonForegroundColor = (Color)Resources["SystemBaseHighColor"];
    }

, но я не знаю, почему заголовок TitleBar пропал.

No TitleBar title

Если я удаляю приведенный выше код, заголовок TitleBar возвращается. Может кто-нибудь, пожалуйста, помогите мне?

1 Ответ

0 голосов
/ 16 апреля 2020

Ваш код , а не , применяющий любой эффект "Acryli c" к строке заголовка вашего приложения. Это просто установка цвета фона кнопки на «Прозрачный», который не близко к акрилу c.

Чтобы строка заголовка acryli c была сделана следующим образом:

В вашем MainPage.xaml.cs добавьте код для скрытия строки заголовка по умолчанию и обновите ее макет так, чтобы она по-прежнему работает как панель инструментов по умолчанию:

public MainPage()
{
    // Hide default title bar.
    var coreTitleBar = CoreApplication.GetCurrentView().TitleBar;
    coreTitleBar.ExtendViewIntoTitleBar = true;
    UpdateTitleBarLayout(coreTitleBar);
}

private void UpdateTitleBarLayout(CoreApplicationViewTitleBar coreTitleBar)
{
    // Get the size of the caption controls area and back button 
    // (returned in logical pixels), and move your content around as necessary.
    LeftPaddingColumn.Width = new GridLength(coreTitleBar.SystemOverlayLeftInset);
    RightPaddingColumn.Width = new GridLength(coreTitleBar.SystemOverlayRightInset);
    TitleBarButton.Margin = new Thickness(0, 0, coreTitleBar.SystemOverlayRightInset, 0);

    // Update title bar control size as needed to account for system size changes.
    AppTitleBar.Height = coreTitleBar.Height;
}

private void CoreTitleBar_LayoutMetricsChanged(CoreApplicationViewTitleBar sender, object args)
{
    UpdateTitleBarLayout(sender);
}

Далее, в вашем MainPage.xaml добавьте AcrylicBrush в качестве основного или родительского фона сетки (Примечание: что эта сетка должна обернуть все содержимое страницы):

<Grid>
  <Grid.Background>
    <AcrylicBrush BackgroundSource="HostBackdrop" 
                  TintColor="{ThemeResource SystemAltHighColor}" 
                  FallbackColor="{ThemeResource SystemAltHighColor}" 
                  TintOpacity="0.5">
     </AcrylicBrush>
  </Grid.Background>
 </Grid>

Надеюсь, это поможет!

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