我正在使用 MVVM 模式使用 C#。我有两个 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
。