0

Как можно реализовать переключение Frame на странице MainWindow по нажатию на кнопку на странице Greeting? Я пытался сделать так, но такой вариант не работает

private void btnShowLicence_Click(object sender, RoutedEventArgs e)
        {
            MainWindow.ContentFrame.Navigate(new Uri("Licence.xaml", UriKind.Relative));
        }

Main Page

    <DockPanel Width="auto" Height="auto"  >
        <Frame Name="ContentFrame" NavigationUIVisibility="Hidden" Focusable="false" Width="auto" Height="auto" Navigated="ContentFrame_Navigated"/>
    </DockPanel>
Zoom
  • 303
  • 3
  • 14
  • Если вы хотите сделать нормальное "страничное" приложение, то не используйте Frame. Ну а так, подумайте сами "переключение Frame на странице MainWindow по нажатию на кнопку на странице Greeting" - наверно ваша страница Greeting должна иметь ссылку на MainWindow и уже через эту ссылку взаимодействовать с контрогами окна. – EvgeniyZ Feb 27 '20 at 10:51
  • @EvgeniyZ Подскажите как эту ссылку получить, я не могу понять как это сделать – Zoom Feb 27 '20 at 14:00
  • В вашем варианте - не как, ибо у вас простые xaml страницы. Смотрите, в WPF принято работать с привязками, то есть у вас есть некое публичное свойство и к нему вы привязываете в XAML нужный объект (например Text="{Binding MyProperty}"). Используя контролы из кода, вы многого себя лишаете и многое будете писать (я уверен) в виде костылей. Имея все это, люди придумали MVVM подход, где все делится на строгие слои, где UI - один слой, а код - другой слой и они не связаны друг с другом. Как только вы это все поймете, я вам советую такой вариант реализации. – EvgeniyZ Feb 27 '20 at 14:49
  • Frame - это уже довольно давно устаревший и ограниченный контрол, который не позволит вам многого. Его задача лишь в отображение страницы, не более. По этой причине я вам и говорю - откажитесь от него! По поводу ссылки, я имел ввиду нечто, на подобие var page = new SecondPage(this);, где this - это MainWindow, переданный через конструктор в класс. – EvgeniyZ Feb 27 '20 at 14:53

0 Answers0