是否有一个正确的方法来创建一个包含subViewModel的C#/ WPF ViewModel?创建一个ViewModel与子ViewModel
目标是:
我有一个MainWindow。该窗口用于读取/创建图像。在那个窗口上有一个按钮,用户可以在2个UserControl之间切换,IHM用于读取图像,另一个用于创建。
的主窗口具有带有MainWindowViewModel:
- 命令开关
- 图像长度
- 应用参数
我想,这两个用户控件可存取权限MainWindowViewModel字段/属性和具有它们自己的命令。
建设将是这样的:
public partial class ReadUserControl : UserControl
{
public ReadUserControl()
{
InitializeComponent();
DataContext = MainViewModel.ReadViewModel;
}
}
public partial class CreateUserControl : UserControl
{
public CreateUserControl()
{
InitializeComponent();
DataContext = MainViewModel.CreateViewModel;
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
DataContext = MainViewModel;
}
}
例如,如果一个MainViewModel包含一个字段ImageWidth在CreateUserControl设置ImageWidth更改ReadUserControl值。
我希望已经清楚了,我不知道该怎么设计我MainViewModel实现这一结果
EDIT1:
我创建了MainWindowViewModel
作为一个单身,但我仍然无法得到MainViewModel.CreateViewModel
和MainViewModel.ReadViewModel
public class MainWindowViewModel : ViewModelBase
{
private static MainWindowViewModel _instance = null;
public static MainWindowViewModel Instance
{
get
{
if (_instance == null)
_instance = new MainWindowViewModel();
return _instance;
}
}
private MainWindowViewModel()
: base()
{
}
#region CreateViewModel
/* How to create ? */
#endregion
#region ReadViewModel
/* How to create ? */
#endregion
}
我添加了EDIT1:MainWindowViewModel作为辛格尔顿似乎是个好主意,但我不知道如何创建subViewModels(添加参数将很难维护,因为我将添加其他参数,而且我是唯一一个开发此应用程序的人,我可以避免副作用) –
我正在做一个小实例...给我第二个 – lokusking
@ A.Pissica t添加示例。注意:一切都符合MVVM并且没有代码隐藏。 DataContext由'DataTemplate'设置。另外,你有一个构造器的例子注入 – lokusking