에 대화 상자를 가져와 다음과 같이하십시오나는 버튼 창을 표시하고 전면
private void showWindow(object obj)
{
var dialog = new AddItemView();
dialog.Show();
}
를 버튼을 다시 클릭하면이 창이 열려있는 동안, 나는 앞으로이 창을 가지고 어떻게 새로운 것을 만들지 않습니까?
에 대화 상자를 가져와 다음과 같이하십시오나는 버튼 창을 표시하고 전면
private void showWindow(object obj)
{
var dialog = new AddItemView();
dialog.Show();
}
를 버튼을 다시 클릭하면이 창이 열려있는 동안, 나는 앞으로이 창을 가지고 어떻게 새로운 것을 만들지 않습니까?
대화 상자 개체를 저장하고 showWindow에서 이미 만들어 졌는지 확인하십시오.
대화 상자 개체에 대한 참조를 지우는 데 Windows Closed 이벤트를 사용했습니다.
AddItemView dialog;
private void showWindow(object obj)
{
if (dialog == null)
{
dialog = new AddItemView();
dialog.Show();
dialog.Owner = this;
dialog.Closed += new EventHandler(AddItemView_Closed);
}
else
dialog.Activate();
}
void AddItemView_Closed(object sender, EventArgs e)
{
dialog = null;
}
이것이 내가 찾고 있었던 것이다. 감사! – Chris
그냥 빨리 스케치 그러나 이것은 당신이 원하는 일을해야합니다
Window1 W = new Window1();
private void Button_Click(object sender, RoutedEventArgs e)
{
if (W.IsVisible)
W.Activate();
else
W.Show();
}
을이 그것을하지 않는 경우, 어쩌면 내가 질문을 오해했다.
수정 된 버그.
창을 인스턴스화 할 클래스 생성자에이를 추가하십시오. 창이 열리면 창을 닫을 수 없습니다.
W.Closing += (s, e) =>
{
e.Cancel = true;
((Window)s).Hide();
};
모달 대화 상자? 싱글 톤 패턴과 포함 된 객체의'Activate' 메소드가 내 마음을 가로 지르는 첫 번째 아이템이다 – xmashallax