WPF如何将自己的对象暴露给其他窗口

时间:2010-11-21 16:22:37

标签: c# wpf

我有这个问题。我在主窗口中创建了两个类的instaces。我需要在后面的代码中创建其他从属窗口,在这个窗口中我需要使用在主窗口中创建的对象的方法。

public partial class MainWindow
{
    //internal MyInterface1 MyObject1;
    //internal MyInterface2 MyObject2;

    internal MyClass1 MyObject1;
    internal MyClass2 MyObject2;

    public MainWindow()
    {
        InitializeComponent();

        //create instances
        MyObject1 = new MyClass1();

        MyObject2 = new MyClass2();
    }

    private void SomeMethod()
    {
        //in this window I neew consume some method and propertie of MyObject1 and MyObject1
        //my temporary solution is:
        var slaveWindow = new SlaveWindow(MyObject1, MyObject2);
    }

}

可以存在合适的解决方案,谢谢。

1 个答案:

答案 0 :(得分:1)

您的“临时”解决方案没有任何问题。我也是这样做的。

或者,您可以公开公开这两个对象,然后将MainWindow传递给SlaveWindow

class MainWindow : ...
{
    public MyClass1 MyObject1 { get; private set; }
    public MyClass1 MyObject2 { get; private set; }

    ...
    var slaveWindow = new SlaveWindow(this);
    ...
}

class SlaveWindow : ...
{
    public SlaveWindow(MainWindow mainWindow)
    {
        mainWindow.MyObject1.SomeMethod();
        mainWindow.MyObject2.SomeMethod();
    }
}

无论哪种解决方案更可取,可能取决于两个对象的性质。但我认为你现在的解决方案很好是相当安全的。