首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Caliburn.Micro怎么写?

Caliburn.Micro怎么写?
EN

Stack Overflow用户
提问于 2017-07-24 04:21:26
回答 1查看 224关注 0票数 0

我开始在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手册,但我不明白为什么。

代码语言:javascript
复制
public MainViewModel(
           DeviceShellViewModel deviceShellViewModel, 
           AboutViewModel aboutViewModel, 
              SettingsViewModel settingsViewModel)
       {
           _deviceShellViewModel = deviceShellViewModel;
           _aboutViewModel = aboutViewModel;
           _settingsViewModel = settingsViewModel;
           ActivateItem(_deviceShellViewModel);
       }

DeviceModel构造函数有不同的参数。哇。我不明白。

代码语言:javascript
复制
public DeviceViewModel(DeviceInfo deviceInfo)
        {
            _commandRunner = IoC.Get<CommandRunner>();
            _eventAggregator = IoC.Get<IEventAggregator>();
            _deviceInfo = deviceInfo;
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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都有特定的责任,为了能够实现它们,它需要特定的对象。

希望这能有所帮助。如果你还有其他问题,我会尽力回答。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45272574

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档