У меня есть (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>
Вы можете инкапсулировать функцию в 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(); }