Можно ли как-то вызвать из Page новую страницу в WPF C#?

Рейтинг: 0Ответов: 1Опубликовано: 25.02.2023

Мне нужно как-то выводить новую страницу с уже созданной (как в WEB приложении), я пытался сделать вызов на подобии этого, но ничего не получается так как доступа к Фрагменту нет из страницы. Посмотрел много инфы на стак оверфлоу, но ничего так и не нашел.

Как я перехожу на страницу

 private void List_btn(object sender, MouseButtonEventArgs e)
        {
            MyFrame.Content = new ListPageUser();
            MyFrame.NavigationService.RemoveBackEntry();
        }

Так же я исаползую ItemsControl который генирирует верстку из моей БД

 <ItemsControl Name="icCatList">
                           <ItemsControl.ItemsPanel>
                               <ItemsPanelTemplate>
                                   <StackPanel Orientation="Horizontal"/>
                               </ItemsPanelTemplate>
                           </ItemsControl.ItemsPanel>
                           <ItemsControl.ItemTemplate>
                               <DataTemplate>
                                   <materialDesign:Card Margin="10 0 10 10 " Cursor="Hand" materialDesign:ElevationAssist.Elevation="Dp3">
                                       <StackPanel Height="200" Width="200"> 
                                           <Image Source="F:\C#\Historical Saratov\Historical Saratov\App_Logo.png"/>
                                           <TextBlock
                                               FontSize="18"
                                               FontWeight="Medium"
                                               Text="{Binding Cat_Name}"
                                           />
                                           <TextBlock
                                               FontSize="15"
                                               FontWeight="Regular"
                                               Text="{Binding Description}"
                                           />
                                       </StackPanel>
                                   </materialDesign:Card>
                               </DataTemplate>
                           </ItemsControl.ItemTemplate>
                       </ItemsControl>

Как можно реализовать переход на нужную мне страницу ?

Ответы

▲ 0Принят

Если в лоб, то можно передать фрейм как аргумент в коструктор

private Frame _parentFrame;

public ListPageUser(Frame parentFrame)
{
    _parentFrame = parentFrame;
    InitializeComponent();
}

Вызвать вот так

MyFrame.Content = new ListPageUser(MyFrame);

Дальше уже разберётесь?

Но вообще, не советую использовать Frame+Page. Советую использовать MVVM и View как ресурсы (пример).