Я хочу скрыть панель навигации на странице, созданной с помощью WPF. Я пробовал ShowsNavigationUI = false
, но он все еще отображает элемент управления.Как скрыть панель навигации на странице WPF
ответ
Настройка ShowsNavigationUI = false на объекте страницы должен делать это. Там, кажется, ошибка, однако, что приведет это к сбою, по меньшей мере, одной последовательности событий:
- Страница уже в NavigationWindow, когда это установлено
- Страница будет перемещаться в сторону и снова
Могут быть другие сценарии, с которыми я еще не столкнулся, но это не позволяет.
Для того, чтобы это полностью работало, я полностью игнорирую свойство Page.ShowsNavigationUI и устанавливаю его в NavigationWindow. Это кажется полностью надежным.
Вот как это можно сделать в конструкторе страницы:
Dispatcher.BeginInvoke(ApplicationPriority.Render, new Action(() =>
{
var navWindow = Window.GetWindow(this) as NavigationWindow;
if(navWindow!=null) navWindow.ShowsNavigationUI = false;
}));
Если вы сделаете это, не помню, чтобы установить ShowsNavigationUI на любом объекте Page.
FYI, вы также можете восстановить свой 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>
Выше работает только для навигационных окон, но я использую обычные окна WPF. Некоторые говорят, что это лучше, чем окна навигации. Я использую DockPanel для размещения моих страниц. Мое решение создает новый шаблон для DockPanel и просто не добавляет кнопки или не скрывает их (см. StackPanel Visibility = «Hidden»). Он работает красиво.
<DockPanel>
<Frame x:Name="_mainFrame">
<Frame.Template>
<ControlTemplate TargetType="Frame">
<DockPanel Margin="7">
<StackPanel Visibility="Hidden"
Margin="0"
Orientation="Horizontal"
DockPanel.Dock="Top"
>
<!--<Button
Content="Avast! Go back!"
Command="{x:Static NavigationCommands.BrowseBack}"
IsEnabled="{TemplateBinding CanGoBack}"
/>
<Button
Content="Forward you dogs!"
Command="{x:Static NavigationCommands.BrowseForward}"
IsEnabled="{TemplateBinding CanGoForward}"
/>-->
</StackPanel>
<Border>
<ContentPresenter />
</Border>
</DockPanel>
</ControlTemplate>
</Frame.Template>
</Frame>
</DockPanel>
позволяет вам динамически загружать и закрывать страницы, сохраняя при этом свою главную страницу? –
Этого я нашел очень просто. В вашей MainWindow, сделайте следующее:
public MainWindow()
public partial class MainWindow : NavigationWindow
{
public MainWindow()
{
InitializeComponent();
ShowsNavigationUI = false;
}
}
}
И если у вас есть событие на кнопку мыши, чтобы открыть новую страницу, просто сделать это:
private void btnEndUserSearch_Click(object sender, RoutedEventArgs e)
{
EndUser EndUserSearchPage = new EndUser();
this.NavigationService.Navigate(EndUserSearchPage);
EndUserSearchPage.ShowsNavigationUI = false;
}
+1 для наглядности. – jogojapan
Если вы используете рамку вы может изменить стиль по умолчанию для Frame, чтобы удалить навигационные кнопки (показано ниже). Такой же подход можно было бы сделать для NavigationWindow. Я изначально попытался установить Page_ShowsNavigationUI, и это не повлияло. Просто добавьте стиль ниже в ResourceDictionary, и он отлично работает.
<Style TargetType="{x:Type Frame}">
<Setter Property="Control.Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Frame}">
<Border BorderThickness="{TemplateBinding Border.BorderThickness}" Padding="{TemplateBinding Control.Padding}" BorderBrush="{TemplateBinding Border.BorderBrush}" Background="{TemplateBinding Panel.Background}">
<ContentPresenter Content="{TemplateBinding ContentControl.Content}" ContentTemplate="{TemplateBinding ContentControl.ContentTemplate}" ContentStringFormat="{TemplateBinding ContentControl.ContentStringFormat}" Name="PART_FrameCP" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
просто скажите на странице контейнере, вы хотите панель навигации или нет, используя NavigationUIVisibility свойства.
<Frame Margin="173,41,1,28" Name="frmPageContainer" NavigationUIVisibility="Hidden" Panel.ZIndex="1" >
У меня была эта проблема, когда я динамически изменяемые содержимого свойство Frame, и решить ее, используя следующий код в моем клик() событие.
ContentFrame.NavigationUIVisibility = NavigationUIVisibility.Hidden;
Где ContentFrame - это имя фрейма, как определено в XAML. то есть
<Frame x:Name="ContentFrame" />
Это очень простая реализация.
Здесь:
<Frame x:Name="_FrameName" NavigationUIVisibility="Hidden" />
:-p
- 1. Скрыть панель навигации на странице flip
- 2. Как скрыть панель навигации?
- 3. Как скрыть панель навигации?
- 4. Как скрыть панель навигации?
- 5. Навигационная панель навигации на странице навигации
- 6. Как скрыть панель навигации на android
- 7. Скрыть панель навигации как facebook
- 8. Как скрыть боковую панель на стартовой странице?
- 9. Скрыть панель навигации и панель инструментов прикосновением
- 10. Скрыть панель навигации в раскадровке
- 11. Скрыть панель навигации, android 4.2+
- 12. Скрыть панель навигации на Android 4.2, PhoneGap
- 13. IOS NavigationController скрыть панель навигации
- 14. Скрыть и Показать панель навигации
- 15. Скрыть панель навигации в flex
- 16. Скрыть Панель навигации не работает
- 17. Скрыть панель навигации в раскадровке
- 18. как скрыть панель навигации в делегате
- 19. Стретч-панель навигации изображений на странице?
- 20. панель навигации не отображается на домашней странице
- 21. Панель навигации для иерархической навигации в wpf
- 22. Скрыть панель навигации, но запомнить историю в фрейме wpf
- 23. Как скрыть панель навигации в Android 6.0?
- 24. Удалить панель навигации из приложения WPF Pages
- 25. Скрыть/Показать панель навигации и панель инструментов на пульте
- 26. Как скрыть или удалить панель навигации наверху?
- 27. Как скрыть панель навигации с помощью JQuery?
- 28. Как скрыть панель навигации в LibGDX?
- 29. Как скрыть панель навигации Постоянно в Android
- 30. Как скрыть панель навигации в firefox
Я не могу найти ApplicationPriority. В каком классе это? У меня есть эта же проблема, но для меня это случайная. – Paparazzi
Изменить «ApplicationPriority.Render» на «DispatcherPriority.Loaded» –