既然您提到了 MVVM,这就是您可能正在寻找的东西。请注意,如果您使用诸如 Caliburn 之类的 MVVM 框架,这将更加简洁和容易,但对于此示例,它只是普通的 MVVM:
public class MainViewModel
{
public MainViewModel()
{
ViewOneModel = new SubViewModel();
ViewTwoModel = new SubViewModel();
Children = new List<SubViewModel>(new[] { ViewOneModel, ViewTwoModel });
}
public void SaveAll()
{
foreach(var child in Children)
{
child.Save();
}
}
public IList<SubViewModel> Children { get; private set; }
public SubViewModel ViewOneModel { get; set; }
public SubViewModel ViewTwoModel { get; set; }
}
public class SubViewModel
{
public void Save()
{
}
}
在 UI 上,您的主视图中基本上包含子视图(UserControls):
<StackPanel>
<Button Width="100" Height="20" Content="Save All" />
<local:ViewOne DataContext="{Binding ViewOneModel}" />
<local:ViewTwo DataContext="{Binding ViewTwoModel}" />
</StackPanel>
您只需使用 ICommand 接口(最好是 RelayCommand 实例)将保存方法绑定到您的按钮。