Как скрыть панель навигации на странице WPF

Я хочу скрыть панель навигации на странице, созданной с помощью WPF. Я попробовал ShowsNavigationUI = false, но это все еще отображает управление.

36
задан gung - Reinstate Monica 26 May 2017 в 15:09
поделиться

1 ответ

Установка ShowsNavigationUI = false в объекте Page должна делать это. Однако, похоже, есть ошибка, которая приведет к сбою, по крайней мере, в одной последовательности событий:

  1. Страница уже находится в NavigationWindow, когда это установлено
  2. Страница перемещается назад и обратно

Там могут быть другие сценарии, с которыми я еще не сталкивался, которые приводят к сбою.

Чтобы это работало абсолютно надежно, я полностью игнорирую свойство Page.ShowsNavigationUI и устанавливаю его вместо NavigationWindow. Это кажется вполне надежным.

Вот как это можно сделать в конструкторе страницы:

Dispatcher.BeginInvoke(ApplicationPriority.Render, new Action(() =>
{
  var navWindow = Window.GetWindow(this) as NavigationWindow;
  if(navWindow!=null) navWindow.ShowsNavigationUI = false;
}));

Если вы это сделаете, не забудьте не устанавливать ShowsNavigationUI для любого объекта страницы.

К вашему сведению, вы также можете изменить стиль окна NavigationWindow по своему усмотрению, изменив его ControlTemplate. Например, это удаляет все, кроме фактического содержимого страницы:

  <Style TargetType="{x:Type NavigationWindow}">
    <Setter Property="Template">
      <Setter.Value>
        <ControlTemplate TargetType="{x:Type NavigationWindow}">

          <AdornerDecorator>
            <ContentPresenter Name="PART_NavWinCP" 
                              ClipToBounds="true"/>
          </AdornerDecorator>

        </ControlTemplate>
      </Setter.Value>
    </Setter>
  </Style>
20
ответ дан 27 November 2019 в 05:09
поделиться
Другие вопросы по тегам:

Похожие вопросы: