Я хочу скрыть панель навигации на странице, созданной с помощью WPF. Я попробовал ShowsNavigationUI = false
, но это все еще отображает управление.
Установка ShowsNavigationUI = false в объекте Page должна делать это. Однако, похоже, есть ошибка, которая приведет к сбою, по крайней мере, в одной последовательности событий:
Там могут быть другие сценарии, с которыми я еще не сталкивался, которые приводят к сбою.
Чтобы это работало абсолютно надежно, я полностью игнорирую свойство 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>