MVVM パターンを使用して C# を使用しています。ビュー モデルを持つ 2 つの WPF ウィンドウがあります。基本的に、メイン ビュー モデルのプロパティを「子」ビュー モデルに渡す必要があります。現時点では、メイン ビュー モデルのコンストラクターで新しいビュー モデルに等しいプライベート変数を設定し、その際に子ビュー モデルのコンストラクターでプロパティを渡すことによってこれを行います。
ただし、コンボボックスで選択された項目のバインディングとして使用されるため、プロパティにリンクされた依存関係プロパティがあります。そのため、子ビューモデルが初期化された後に変更される可能性がありますが、コンストラクターでプロパティを渡すことで、自分の子ビューモデルに変更が加えられません。
それで、プロパティをコンストラクターに渡し、メインビューモデルで変更するときに子ビューモデルで変更する方法はありますか? または、メイン ビュー モデルのプロパティが設定されるたびに更新される子ビュー モデルにプロパティを作成する必要がありますか?
それが理にかなっていることを願っています。
編集メイン ビュー モデル内で、次のように宣言します。
public readonly DependencyProperty CurrentDatabaseManagedProperty = DependencyProperty.Register("CurrentDatabaseManaged", typeof(DatabaseInfo), typeof(MainViewModel));
public DatabaseInfo CurrentDatabaseManaged {
get { return (DatabaseInfo)GetValue(CurrentDatabaseManagedProperty); }
set { SetValue(CurrentDatabaseManagedProperty, value); }
}
public DatabaseInfo CurrentDatabaseManagedSelection {
get { return CurrentDatabaseManaged; }
set {
if (CurrentDatabaseManaged != null &&
(String.Equals(value.Name, CurrentDatabaseManaged.Name, StringComparison.OrdinalIgnoreCase))) return;
CurrentDatabaseManaged = (value.IsUsable ? value : dbm.ReadDatabase(value.FileName));
}
}
CurrentDatabaseManagedSelection
コンボボックスの SelectedItem はどこにありますか。メイン ビュー モデルのコンストラクターには、次のものがあります。
_DatabaseVM = new ChildViewModel(CurrentDatabaseManaged);
のコンストラクタはChildViewModel
次のようになります。
public ChildViewModel( DatabaseInfo SelectedDatabase)
{
if (SelectedDatabase != null)
_SelectedDatabase = SelectedDatabase;
}
}
_SelectedDatabase
基本的には随時更新していきたいと思いCurrentDatabaseManagedSelection
ます。