Jest dużo rozwiązań wszystko zależy od tego w jaki sposób ma się odwoływać. Np Masz okno główne oraz wyskakujące okna boczne gdzie wprowadzasz jakieś sobie dane i one mają być wprowadzone np do kontrolek okna głównego.
Masz 2 okna tego samego poziomu czyli raz w jednym cos wprowadzasz wpływa na 2, raz wprowadzasz w 2 wtedy wpływa na okno 1. Tutaj proponuje zrobić klasę ModelView która będzie operowała.
W ModelView możesz zarówno odwoływać się do wartości funkcji czy też obiektów zadeklarowanych w odpowiedni sposób. ModelView jak dla mnie najlepiej zrobić sobie na singletonie.
Dajmy prosty przykład odnoszący się do poziomowych widoków i operacji na kontrolkach.
Masz główne i posiada kontrolkę np
Okno 1
LB_JakasZmiennaDoWyswietlenia // Label
W miejscu wywoływania okna
Window myWindow = new MojedrugieOkno(LB_JakasZmiennaDoWyswietlenia) // przesyłamy w nim parametr jakiegoś obiektu
dalej to co robisz żeby wyświetlić okno
Okno 2
W kodzie okna 2
Label jakasotrzymanakontrolkaLabel
public MojedrugieOkno(Label _jakasotrzymanakontrolka)
{
InitializeComponent();
this.jakasotrzymanakontrolkaLabel = _jakasotrzymanakontrolka;
}
private void Button_Click(sender itp przycisku)
{
jakasotrzymanakontrolkaLabel.Text = "Przyjmij se co chcesz";
}
W tym momencie operujesz nie na nowym obiekcie typu label tylko na tym który przesłałeś.
Jak byś chciał używać MV to też podobnie będzie to działać.