1

MainWindow にバインドされた ViewModel があります。ViewModel に、メニュー項目を選択した後に開く 2 番目のウィンドウにバインドしたいプロパティがあります。これが、2 番目のウィンドウにバインドしたプロパティです。ここまでは順調ですね

private string _displayPathToLib;
    public string DisplayPathToLib
    {
        get { return _displayPathToLib; }
        set
        {
            _displayPathToLib = value;
           OnPropertyChanged("DisplayPathToLib");
        }
    }

ICommand インターフェイスを使用するコマンドを使用して、2 番目のウィンドウを開きます。ここにスニペットがあります

public void Execute(object parameter)
    {
       BrowseDialog winBrowseDialog = new BrowseDialog();
        Nullable<bool> BrowseDialogResult = winBrowseDialog.ShowDialog();

2 番目のウィンドウが正常に開き、表示されているテキスト ボックスを編集できます。テキスト ボックスに何かを入力すると (デバッグ ブレークを設定することにより)、「DisplayPathToLib」プロパティの変更を確認できます。ただし、ウィンドウを閉じると、「DisplayPathToLib」の値は NULL に戻ります。以下は、[OK] ボタンのクリックを処理するために使用しているコード ビハインドのスニペットです。

private void okButton_Click(object sender, RoutedEventArgs e)
    {

        DialogResult = true;
        Close();
    }

プロパティが NULL に戻り続けるのはなぜですか? 「DisplayPathToLib」の値を保持するにはどうすればよいですか??? 私はすべてを試しました。また、MVVM パターンを維持しようとしましたが、コード ビハインドなしでは [OK] ボタンを機能させることができませんでした。:-(

4

1 に答える 1