2010-11-21 14 views
2

この問題があります。メイン・ウインドウに私のクラスのスタジオを2つ作ります。私はコードの中に他のスレーブウィンドウを作成する必要があります。このウィンドウでは、メインウィンドウで作成されたオブジェクトのメソッドを消費する必要があります。WPF自分のオブジェクトを他のウィンドウに公開する方法

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); 
    } 

} 

ありがとうございます。

+2

これは正常に動作します。どうしたの? – Donnie

+0

はい。賢明なようだ! – miguel

+0

私は同意すると、あなたの現在のソリューションは私にとってもまったく問題ないようです。 –

答えて

1

「一時的な」ソリューションに問題はありません。私は同じようにやっています。

また、あなたが公に2つのオブジェクトを公開し、その後SlaveWindowMainWindowを渡すことができます。

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(); 
    } 
} 

おそらく望ましいどちらのソリューションは、あなたの二つのオブジェクトの性質に依存します。しかし、あなたの現在の解決策は大丈夫だと言うのはかなり安全だと思います。

関連する問題