我正在使用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
将被更新。
请你的问题更简单。 –
@SeyedMortezaMousavi请建议我如何做到这一点?我已经包含了我认为需要的所有信息。最后一段可能是一个独立的结论,虽然 – Andy
@Andy代码示例将有助于澄清您的问题。你的构造函数,绑定和其他相关部分是什么样的? –