2010-11-21 25 views
2

Bu sorunla karşılaşıyorum. Ana penceremde sınıflarımın iki manşetini yaratıyorum. Bir arkasındaki kodda başka köle penceresi oluşturmam gerekiyor ve bu pencerede ana pencerede oluşturulan nesnelerin yöntemini tüketmem gerekiyor.WPF kendi nesnesini diğer pencereye nasıl gösterebilir

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

} 

Uygun bir çözüm bulunabilir, teşekkürler.

+2

Bu iyi çalışır. Sorun ne? – Donnie

+0

evet. mantıklı görünüyor! – miguel

+0

Katılıyorum, mevcut çözümünüz bana da gayet iyi görünüyor. –

cevap

1

"Geçici" çözümünüzle ilgili bir sorun yok. Ben de aynısını yapardım.

Alternatif olarak, halka iki nesneyi açığa çıkaracak ve ardından MainWindowSlaveWindow geçmek: muhtemelen tercih edilir Hangi çözüm

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

senin iki nesne niteliğine bağlıdır. Ama bence mevcut çözümünüzün iyi olduğunu söylemek oldukça güvenli.

İlgili konular