powered by simpleCommunicator - 2.0.34     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / NavigationCommands.BrowseHome
8 сообщений из 8, страница 1 из 1
NavigationCommands.BrowseHome
    #39952564
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа добрый день,

подскажите есть какой либо простой путь реализации перехода на начальную страницу приложения wpf без кастомной реализации обработчика биндинга команды?

грубо говоря:
Код: sql
1.
2.
3.
4.
5.
6.
7.
<Application x:Class="SBM.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:wpf_pages"
             StartupUri="Auth.xaml">
    <Application.Resources/>
</Application>



Auth класс наследует System.Windows.Controls.Page

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

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<Page x:Class="SBM.content_Monitoring"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:wpf_pages"
      mc:Ignorable="d" 
      d:DesignHeight="450" d:DesignWidth="800"
      Title="some_page_with_relogin_button">

    <Grid Background="Black">
         <Button Text="Change connection" Command="NavigationCommands.BrowseHome"/>
    </Grid>
</Page>



Понятно что CommandBinding не привязан кнокпа будет не активна, если его привязать то необходимо будет явно реализовать обработчик события чего бы не хотелось.

Есть ли способ без особых телодвижений организовать переход на страницу Auth.xaml по нажатию кнопки?

Хочу добиться простого поведения как если бы было так:


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<Page x:Class="SBM.content_Monitoring"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:wpf_pages"
      mc:Ignorable="d" 
      d:DesignHeight="450" d:DesignWidth="800"
      Title="some_page_with_relogin_button">

    <Grid Background="Black">
         <Button Text="Change connection" Command="NavigationCommands.BrowseBack"/>
    </Grid>
</Page>



ничего лишнего не писал, по нажатию кидает на предыдущую страницу.
...
Рейтинг: 0 / 0
NavigationCommands.BrowseHome
    #39952575
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
команду можно реализовать как класс, объявить её как ресурс и подключить через {StaticResources}.
и передавать в параметр команды нужный контекст.
...
Рейтинг: 0 / 0
NavigationCommands.BrowseHome
    #39952617
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

а зачем? меня интересует именно более простой в плане телодвижений метод добиться перехода на начальную страницу

тогда уж проще на кнопку повесить обработчик OnClick и в методе вызвать явно:
Код: c#
1.
2.
3.
private void Button_OnClick(object sender, RoutedEventArgs e){ 
    this.NavigationService.Navigate(new Uri("Auth.xaml", UriKind.Relative));
}



Вообще мне подошел функционал обычного перехода с Hyperlink, но фишка в том что объект вызова это не hyperlink а MenuItem

Если уж совсем честно вот так выглядит нужная страница
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
 
<Page x:Class="SBM.MainPage"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      xmlns:local="clr-namespace:SBM"
      mc:Ignorable="d" 
      d:DesignHeight="450" d:DesignWidth="800"
      Title="MainPage" ShowsNavigationUI="False">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="21"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Menu Grid.Row="0" Height="Auto" VerticalAlignment="Top" HorizontalAlignment="Stretch">
            <Menu.ItemsPanel>
                <ItemsPanelTemplate>
                    <DockPanel HorizontalAlignment="Stretch"/>
                </ItemsPanelTemplate>
            </Menu.ItemsPanel>
            <MenuItem Header="Мониторинг" Click="DoMonitoring" />
            <MenuItem Header="Изменить окружение" HorizontalAlignment="Right" Click="DoRelogin" />
<!--Hyperlink NavigationUri="Auth.xaml"-->
        </Menu>
        <Frame x:Name="fr_Content" Grid.Row="1"/>
    </Grid>
</Page>



нужно по нажатию итема "изменить окружение" что бы страница менялась на начальную страницу приложения
То чего я хочу делает закоменченный гиперлинк, но он неествественно выглядит в меню, поэтому его я не рассматриваю.

Сейчас сделано на основе обработчика метода, но я задался вопросом почему бы не воспользоваться функционалом который по сути должен был бы реализовывать BrowseHome но как оказалась там нужна явная реализация. в таком случае вопрос: а нахрена они его вообще сделали?

Я пока не силен в топологии переходов wpf может не знаю какой то сакральной тайны.

адд: NavigationService же хранит журнал переходов, логично было бы реализовать метод BrowseHome так что он бы переходил на самую первую страницу из журнала или хранил ее отдельной записью гденибудь. ну это как я себе представлял, может мечтать не вредно :)
...
Рейтинг: 0 / 0
NavigationCommands.BrowseHome
    #39952629
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

Модератор: Для оформления xml используй пожалуйста src xml, причем тут c#?
...
Рейтинг: 0 / 0
NavigationCommands.BrowseHome
    #39952648
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

Первая страница и Home это разные вещи, даже в браузере
...
Рейтинг: 0 / 0
NavigationCommands.BrowseHome
    #39952649
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

прощу прощения в момент написания думал о сишном коде не обратил внимания :)

Roman Mejtes,

понимаю, но согласителсь было достаточно лаконично

Код: xml
1.
<Application x:Class="someclass" StartupUri="first.xaml"/>



Код: xml
1.
2.
3.
<Page x:Class="first">
   <Hyperlink NavigationUri="some_page.xaml">Go next</Hyperlink>
</Page>



Код: xml
1.
2.
3.
<Page x:Class="some_page">
  <Button Commad="NavigationCommands.FirstPage"/>
</Page>



при этом в последнем варианте он сам бы сообразил что FirstPage это StartupUri приложения. ну на крайняк можно где нибудь было указать какую именно страницу я имею ввиду начальной в виде какого либо свойства, но не мутить лишних велосипедов.

А так действительно можно реализовать отдельную комманду в виде собственной реализации, но просто странно что NavigationCommands.FirstPage предусмотрена как команда но реализация все равно оставлена на конечного пользователя

или эта шляпа вообще реализована только ради FlowDocument?
...
Рейтинг: 0 / 0
NavigationCommands.BrowseHome
    #39952655
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

вообщем поигрался с FlowDocumentPageViewer.
Он реализует нужную логику, но компонент крайне неудобный на стадии разработки. :-/
...
Рейтинг: 0 / 0
NavigationCommands.BrowseHome
    #39952861
vb_sub
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще по хорошему должен быть какой-то кастомный NavigationService, который слушает входящий параметр от ViewModel и переходит на любую страницу, которую укажешь.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / NavigationCommands.BrowseHome
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]