WPF доступ к элементу управления страницы из класса MainWindow

Я создал приложение WPF, которое имеет навигацию между двумя страницами. Я хочу, чтобы элемент управления (групповое окно) на одной из страниц был скрыт по умолчанию и чтобы его можно было включить при нажатии комбинации клавиш. Home1 - это имя страницы, а bgdb - это имя группы. Home1_Loaded подключается к загрузке страницы внутри фрейма в MainWindow

public void Home1_Loaded(object sender, RoutedEventArgs e)
{
    bdgb.Visibility = Visibility.Collapsed;
}

Какие изменения нужно сделать, чтобы я мог получить доступ к bgdb из класса MainWindow и показать его с помощью комбинации клавиш (например, Ctrl+B)? это код для главного окна, загружающего домашнюю страницу по умолчанию

private void Window_Initialized(object sender, EventArgs e)
{
    Main.Content = new home();
    Main.Navigate(new Uri("home.xaml", UriKind.RelativeOrAbsolute));
}

1 ответ

Решение

Если вы хостинг Page в Frame элемент в MainWindowВы могли бы разыграть Content собственность Frame в Home1 и затем получить доступ к любому из его членов, например:

Home1 home1 = e.Content as Home1;
if (home1 != null)
    home1.bdgb.Visibility = Visibility.Collapsed;

MainWindow.xaml:

<Frame x:Name="frame" />

Вы могли бы, например, справиться с Navigated событие для Frame:

private void Window_Initialized(object sender, EventArgs e)
{
    Main.Content = new home();
    Main.Navigated += Main_Navigated;
    Main.Navigate(new Uri("home.xaml", UriKind.RelativeOrAbsolute));
}

private void Main_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
    home home1 = Main.Content as home;
    if (home1 != null)
        home1.bdgb.Visibility = Visibility.Collapsed;
    Main.Navigated -= Main_Navigated;
}
Другие вопросы по тегам