如何在MainWindow中创建实例并在另一个类中使用它。

3

我有一个严重的问题,我正在尝试在MainWindow类中创建一个实例,就像这样:

public MainWindow()
{
     InitializeComponent();
     AppWindow = this;
     CalenderBackground background = new CalenderBackground(Calendar);
}

我需要在MainWindow中使用这个实例,因为CalenderBackground类有一个方法可以刷新之前插入到日历中的日期,我正在使用这个资源。

我想在Fixtures类中使用background对象:

class Fixtures
{
     MainWindow.Calendar.Background = background.GetBackground();
}

但事实上我无法创建它,因为我无法看到变量background,为什么?


因为您在构造函数中声明了 background,所以它在构造函数外部不可见。请声明类型为 CalendarBackground 的局部变量,并在构造函数中初始化 background - Michael
2个回答

0
将Background对象通过构造函数传递给Fixtures吗?
CalenderBackground background = new CalenderBackground(Calendar);
Fixtures fixtures;

public MainWindow()
{
     InitializeComponent();
     AppWindow = this;
     fixtures = new Fixtures(background);
}

class Fixtures
{
    public Fixtures(Background background)
    {
        MainWindow.Calendar.Background = background.GetBackground();
    }
}

在MainWindow构造函数中,为什么不直接执行“Calendar.Background = new CalenderBackground(Calendar);”呢? - Glen Thomas
公共静态日历 Calendar; 类型 MainWindow 已经包含了一个名为 Calendar 的定义。Calendar 是一个 XAML GUI。 - Harold Finch
移除 "public static Calendar Calendar;" - Glen Thomas
我收到了这个错误:字段初始化器不能引用不是静态的 MainWindows.Calendar 属性、方法或字段;在 CalenderBackground background = new CalenderBackground(Calendar); 中,特别是 Calendar(该参数)被以红色下划线标出。 - Harold Finch
我通过在MainWindow构造函数中插入以下代码解决了这个问题:CalenderBackground background = new CalenderBackground (Calendar); - Harold Finch
显示剩余2条评论

0
你在MainWindow方法的作用域内声明了background变量。为了能够在Fixtures类中访问它,你需要将它作为参数传递给构造函数,然后使用它来设置一个字段,例如:
private CalenderBackground _background;

public Fixtures(CalenderBackground background)
{
   _background = background;
}

或者你可以在你的MainWindow上创建一个公共属性,并从Fixtures类中访问它。

public CalenderBackground Background {get; set;}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接