2013-09-17 3 views
0

У меня есть 4 окна.
1. SubjectMovies.xaml
2. SpecificMovies.xaml
3. SearchMovies.xaml
4. VideoPlayer.xamlWPF проходное окно как переменное

Все первые 3 окна можно открыть четвертый один.
Я хочу знать, какой из них открыть четвертый, когда четвертый открывается и хранить его в переменной (использовать его позже - я хочу использовать его так: Sender (as Window) .Show()), что-то вроде:

Window sender; 
public VideoPlayer(Window s) 
{ 
    InitializeComponent(); 
    sender = s; 

} 

private void GoBack() 
{ 
    this.Hide(); 
    sender.Show(); 
} 

ответ

2

Вы хотите установить Owner свойство VideoPlayer окна. из каждого окна вы открываете его:

VideoPlayer vp = new VideoPlayer(); 
vp.Owner = this; 

Внутри VideoPlayer вы можете получить доступ к его this.Owner.

Не нужно получать его в качестве параметра в конструкторе.

0

Я рекомендую ShowDialog для ребенка, чтобы достичь этого, потому что ребенок не должен нести ответственность за показ своего родителя.

пример:

public void OpenVideoPlayer() 
{ 
    VideoPlayer vp = new VideoPlayer(); 
    this.Hide(); 
    vp.ShowDialog(); 
    this.Show(); 
} 

Таким образом, ребенок не зависит от родителей. Также, если вы не хотите скрыть родителя, но вместо этого, чтобы свести его к минимуму, родительский контроль над этим.

С событиями:

public void OpenVideoPlayer() 
{ 
    VideoPlayer vp = new VideoPlayer(); 
    vp.Closed += vp_Closed; 
    this.Hide(); 
    vp.Show(); 
} 

void wnd_Closed(object sender, EventArgs e) 
{ 
    this.Show(); 
} 
+0

Этот путь, хотя родитель будет недоступен до закрытия дочернего окна –

+0

Родитель не должен иметь прямого доступа к дочернему элементу. если вы хотите обменять некоторую информацию на родителя, вы должны использовать события. Поэтому даже если вы хотите, чтобы ребенок отображал родителя. Он должен вызывать событие, например: событие RequestShowParent, чтобы уведомить родительскую форму, чтобы показать себя. –

+0

Я хочу получить доступ к родительскому элементу из дочернего элемента без создания событий/функций во всех трех окнах – Ron

Смежные вопросы