相关信息:使用WPF应用程序,C#,Visual Studio 2010,.Net 4
我有两个窗口:Window1和MainWindow。在Window1中,我有一个复选框,选中后,会将MainWindow中的label1设置为不可见。我该怎么做?
我无法做MainWindow newWindow = new MainWindow()
,因为我不想创建一个新的主窗口。我尝试了以下代码,但是我抛出了异常:{“对象引用未设置为对象的实例。”}`。
private void checkBox4_Checked(object sender, RoutedEventArgs e)
{
if (checkBox4.IsChecked == true)
{
(Application.Current.MainWindow as MainWindow).label1.Visibility =
Visibility.Hidden;
}
else
{
(Application.Current.MainWindow as MainWindow).label1.Visibility =
Visibility.Visible;
}
}
最好的方法是什么?谢谢你提前。
答案 0 :(得分:2)
向Window1
添加活动:
public event Action<bool> SomethingChecked; //TODO rename to indicate what was checked
选中此复选框后,提起该事件:
private void checkBox4_Checked(object sender, RoutedEventArgs e)
{
if(SomethingChecked != null)
SomethingChecked(checkBox4.IsChecked);
}
然后从主窗体中添加一个事件处理程序:
Window1 other = new Window1();
other.SomethingChecked += checked => label1.Visibility =
checked ? Visibility.Visible : Visibility.Hidden;
答案 1 :(得分:0)
在Window1中创建一个事件,在MainWindow中处理该事件。
下面是一个例子,不是真正的工作代码......
MainWindow
{
private void SomeStuff()
{
Window1 window = new Window1();
window.CheckBoxClick += new OnCheckBoxClick(SomeMethod);
}
private void SomeMethod(bool state)
{
// use state;
}
}