从用户控件访问父窗口中的WPF元素

时间:2015-07-28 07:20:30

标签: wpf vb.net

我在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"进行控制宾语。如何重写最后一行以获取对现有框架对象的引用。

1 个答案:

答案 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