2017-10-11 1 views
-1

그래서이 프로젝트에는 두 개의 창이 있습니다.창을 닫을 때 새 인스턴스 창을 저장하는 방법은 무엇입니까?

MainWindow 및 SecondaryWindow & SecondaryWindow &의 새 인스턴스를 초기화하는 MainWindow에 단추가 있습니다. 나는 SecondaryWindow의 확인란을 선택하고 다음을 닫을 때

SecondaryWindow sw = new SecondaryWindow(); 
sw.Show(); 

문제는 내가 다시 열 창을 지 웁니다 ..입니다. 왜 열리는 지 알 수 있습니다. NEW 매번 창유리가 없습니다. 어떻게 저장합니까?

나는 ..

SecondaryWindow sw; 

그리고이를하고있는 MainWindow를에 다음 ..이 일을

sw.Show(); 

을이

public static SecondaryWindow instance; 
public SecondaryWindow() 
     { 
      InitializeComponent(); 
      instance = this; 
     } 

그리고 시도했지만 그 라인이 없다는 오류가 발생합니다 그것은 null이다.

그게 내가하려고했던 싱글 톤이라고 생각합니다.

+0

무엇을 이해하기 정말 어렵다 당신은 성공하기를 원 하나, 나는 시도 할 것입니다. 어쩌면 창을 저장할 필요가 없기 때문에 일부 값을 저장하고 다시 열 때이 값을 창에 적용하면됩니다. 내가 맞습니까? – Valerii

+0

정적 필드를 만들 때 어떻게 될지 생각해 볼 수 있습니까? 당신이 뭔가 유용한 일을한다고 결론을 내린 추론 과정을 진행할 수 있습니까? –

답변

0

확인란의 값을 전역 변수에 바인딩합니다.

App.Current.Properties["NameOfProperty"] = "ValueOfProperty"; 
string myProperty = App.Current.Properties["NameOfProperty"]; 

이와 같이 전역 변수를 읽거나 쓸 수 있습니다. 이렇게하면 확인란의 값을 유지할 수 있습니다.

1

이미 닫힌 창에 대해 Show() 메서드를 호출 할 수 없습니다. 당신이 무엇을 할 수 있는지

CheckBoxIsChecked 속성 값을 추적 뷰 모델 클래스를 만들고이 클래스의 인스턴스에 SecondaryWindowDataContext을 설정하고 소스에보기에서 CheckBox을 결합하는 것입니다 부동산, 예를 들면 :

public class MainWindow : Window 
{ 
    private readonly ViewModel _vm = new ViewModel(); 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Open_Click(object sender, RoutedEventArgs e) 
    { 
     SecondaryWindow sw = new SecondaryWindow(); 
     sw.DataContext = _vm; 
     sw.Show(); 
    } 
} 

public class ViewModel 
{ 
    public bool IsChecked { get; set; } 
} 

SecondaryWindow.xaml :

<CheckBox Content="Check" IsChecked="{Binding IsChecked}" /> 
관련 문제