我开始在UWP学习Caliburn.Micro。首先,我在这里找到了一个很好的例子。https://github.com/IanSavchenko/BleLab (谢谢你,伊恩)

此应用程序具有BumbugerMenu + Caliburn.Micro。在这个项目中,BumbergerMenu根是“主”。子菜单是“关于”,“设置”,“设备”。我的问题是..。如何将"ViewModel“写成普通的.
第一个是"MainViewModels“--这个类是用”导体“扩展的。
子菜单"AboutViewModel“类扩展为"PropertyChangedBase”
子菜单"DeviceViewModel“这个类是用导体,IHandle扩展的
Q1:我应该什么时候用“指挥”而不是"PropertyChangedBase“
Q2:在MainViewModel中,为什么类"MainViewModel“在初始化时可以期待这个参数?我看了Caliburn.Micro手册,但我不明白为什么。
public MainViewModel(
DeviceShellViewModel deviceShellViewModel,
AboutViewModel aboutViewModel,
SettingsViewModel settingsViewModel)
{
_deviceShellViewModel = deviceShellViewModel;
_aboutViewModel = aboutViewModel;
_settingsViewModel = settingsViewModel;
ActivateItem(_deviceShellViewModel);
}DeviceModel构造函数有不同的参数。哇。我不明白。
public DeviceViewModel(DeviceInfo deviceInfo)
{
_commandRunner = IoC.Get<CommandRunner>();
_eventAggregator = IoC.Get<IEventAggregator>();
_deviceInfo = deviceInfo;
}发布于 2017-07-25 07:57:38
关于你的第一个问题:
PropertyChangedBase -实现INotifyPropertyChangedEx (从而实现INotifyPropertyChanged)。除了标准的字符串机制之外,它还提供了一个基于lambda的NotifyOfPropertyChange方法,支持强类型的更改通知。此外,所有属性更改事件都自动封送到UI线程2。 在Caliburn.Micro中,此角色由具有以下成员的IConductor接口表示: ActivateItem -调用此方法以激活特定项。如果指挥使用的是“屏幕集合”,它也会将其添加到当前进行的项目中。DeactivateItem -调用此方法以禁用特定项。第二个参数指示是否也应关闭该项。如果是这样的话,如果指挥使用的是“屏幕集合”,它也将从当前进行的项目中删除。当导体处理了一个项目的激活时引发的ActivationProcessed。它指示激活是否成功。3.请调用此方法返回导体正在跟踪的所有项目的列表。如果导体使用的是“屏幕集合”,则返回所有“屏幕”,否则只返回ActiveItem。(从IParent接口) INotifyPropertyChangedEx -这个接口由IConductor组成。
因此,基本上最重要的部分是导体允许您在特定的时间加载特定的视图(导航/视图注入)。引号来源:https://caliburnmicro.codeplex.com/wikipage?title=Screens,%20Conductors%20and%20Composition
关于你的第二个问题:
MainViewModel的构造函数需要来自IoC的VM实例,以便导航可以由导体通过Q1执行,如my从Q1中所述)。对于使用"DeviceModel构造函数有不同参数“的部分,...that是自然的;每个VM都有特定的责任,为了能够实现它们,它需要特定的对象。
希望这能有所帮助。如果你还有其他问题,我会尽力回答。
https://stackoverflow.com/questions/45272574
复制相似问题