Как вызвать событие окна1 в окно 2 в WPF

У меня есть (Mainwindow) и (window1) в Mainwindow у меня есть кнопка, а в window1 у меня есть ярлык. теперь я хочу сделать так, чтобы при нажатии кнопки в главном окне цвет метки менялся в окне1. Это то, что Far пробовал до сих пор, но это не сработало

общедоступный частичный класс MainWindow: окно

{
    public MainWindow()
    {
        InitializeComponent();

      
    }

    private void btnFirstWindow_Click(object sender, RoutedEventArgs e)
    {
        Window1 sWindow = new Window1(btnFirstWindow);
        sWindow.Show();

    }
}

XAML главного окна

Заголовок = «MainWindow» Высота = «450» Ширина = «800»>

<Grid>

    <Button x:Name = "btnFirstWindow" Content = "Button" HorizontalAlignment = "Left" Height = "140" Margin = "492,77,0,0" VerticalAlignment = "Top" Width = "151" Click = "btnFirstWindow_Click"/>

</Grid>

общедоступный частичный класс Window1: окно

{
    private Button btnfirstWindow;

    public Window1(Button btnfirstWindow)

    {
        this.btnfirstWindow = btnfirstWindow;

        InitializeComponent();
    }

    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        btnfirstWindow.Click += btnfirstWindow_Click;
    }

    void btnfirstWindow_Click(object sender, RoutedEventArgs e)
    {
        lblShowUser.Background = Brushes.Red;
    }

}

** Окно1 XAML**

Заголовок = "Окно1" Высота = "450" ​​Ширина = "800">

<Grid>
    <Label  Name = "lblShowUser" Content = "Label" HorizontalAlignment = "Left" Height = "119" Margin = "321,98,0,0" VerticalAlignment = "Top" Width = "281"/>

</Grid>

Вот как я заставил это работать, когда и кнопка, и ярлык были в главном окне.

общедоступный частичный класс MainWindow: окно

{
    public MainWindow()
    {
        InitializeComponent();
    }

    private void btn_Click(object sender, RoutedEventArgs e)
    {
        if (Label.Background == Brushes.Black)
        {
            Label.Background = new LinearGradientBrush(Colors.Red, Colors.Red, 90);

        }
        else
        {
            Label.Background = Brushes.Red;
            
        }
    }
} 

 **XAML**

Заголовок = «MainWindow» Высота = «450» Ширина = «800»>

<Grid>

    <Label Background = "NavajoWhite" Name = "Label" Content = "Label" FontSize = "140" HorizontalAlignment = "Left" Height = "210" Margin = "275,104,0,0" VerticalAlignment = "Top" Width = "497"/>

    <Button Name = "btn" Content = "Button" HorizontalAlignment = "Left" Height = "56" Margin = "40,43,0,0" VerticalAlignment = "Top" Width = "377" Click = "btn_Click"/>

</Grid>
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
30
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете инкапсулировать функцию в Window2 для вызова Window1.

MainWindow.xaml.cs

public partial class MainWindow : Window
{
    Window1 sWindow = new Window1();

    public MainWindow()
    {
        InitializeComponent();      
    }

    private void btnFirstWindow_Click(object sender, RoutedEventArgs e)
    {
        sWindow.Show();
    }

    private void btnChangeBackground_Click(object sender, RoutedEventArgs e)
    {
        //Mainwindow event pass to window1
        sWindow.ChangeForeground();
    }
}

Окно1.xaml.cs

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();      
    }

    public void ChangeBackground(Color color)
    {
         //do something here
    }
}

Это ты сделал новую кнопку? private void btnChangeBackground_Click(object sender, RoutedEventArgs e) { // Событие главного окна передается в window1 sWindow.ChangeForeground(); }

SAE 21.03.2022 15:12

просто смоделируйте событие

sync 22.03.2022 01:44

Другие вопросы по теме