我在WPF应用程序的主窗口中有一个自定义菜单控件。在主窗口中,我有一个框架。我想根据自定义菜单控件中的选择更改此框架中的页面。以下是我试过的代码。
Private Sub NominationMenuItem_Click(sender As Object, e As RoutedEventArgs)
Dim parentWindow As Window
parentWindow = Application.Current.MainWindow
parentWindow.MainFrame.Navigate(New NominationSearch)
End Sub
我知道我无法直接访问" MainFrame"使用" parentWindow"进行控制宾语。如何重写最后一行以获取对现有框架对象的引用。
答案 0 :(得分:0)
UserControl
不适合操纵它的父母。您应该让MainWindow
通过事件听取NominationMenuItem
更改,然后MainWindow
自行执行导航。
首先,您需要在UserControl
中定义一个事件:
Public Event NominationMenuItemChanged As RoutedEventHandler
Private Sub NominationMenuItem_Click(sender As Object, e As RoutedEventArgs)
RaiseEvent NominationMenuItemChanged(Me, New RoutedEventArgs())
End Sub
然后在MainWindow
:
Public Sub MainWindow()
AddHandler MyUserControl.NominationMenuItemChanged, AddressOf UC_NominationMenuItemChanged
End Sub
Private Sub UC_NominationMenuItemChanged(sender As Object, e As RoutedEventArgs)
MainFrame.Navigate(MyUserControl.NominationSearch)
End Sub