随笔分类 -  Prism Sample

解析Prism Wpf Sample
摘要:prism使用导航功能的时候,跳了几个坑,记录一下。 1、导航记录的产生,是在区域导航过程中产生的。 _regionManager.Regions[PrismManager.MainViewRegionName].RequestNavigate(obj.NameSpace, back => { jo 阅读全文
posted @ 2022-07-01 09:42 cbaa 阅读(206) 评论(0) 推荐(0) 编辑
摘要:一下子跳到29,不是我的错,应该是新版本中去掉了一些过重的功能,案例就也去掉了,所以不是我的错。 本例是演示行为转命令的,事实上前面已经用到了。 xmlns:i="http://schemas.microsoft.com/xaml/behaviors" <i:Interaction.Triggers 阅读全文
posted @ 2021-06-17 13:54 cbaa 阅读(214) 评论(0) 推荐(0) 编辑
摘要:本例是在上一案例中导航参数的基础上增加了导航的历史记录功能,就是向前向后的功能。 导航本身很简单,以下代码就实现了: public void OnNavigatedTo(NavigationContext navigationContext) { _journal = navigationConte 阅读全文
posted @ 2021-06-17 13:26 cbaa 阅读(122) 评论(0) 推荐(0) 编辑
摘要:在导航中跳转时,视图是缓存的。如果要求某视图在离开后就销毁,需要实现 public class ViewAViewModel : BindableBase, INavigationAware, IRegionMemberLifetime { public bool KeepAlive=>false; 阅读全文
posted @ 2021-06-16 15:06 cbaa 阅读(189) 评论(0) 推荐(0) 编辑
摘要:导航到一个视图,如果在离开这个视图时需要确认,在VM中实现以下接口 public class ViewAViewModel : BindableBase, IConfirmNavigationRequest { public ViewAViewModel() { } public void Conf 阅读全文
posted @ 2021-06-16 14:39 cbaa 阅读(114) 评论(0) 推荐(0) 编辑
摘要:这个例子是说明导航中传递参数,类似Asp.net中实现。 例子的模板,是例16中使用regionContext实现过的。在例16中, <Grid x:Name="LayoutRoot" Background="White" Margin="10"> <Grid.RowDefinitions> <Ro 阅读全文
posted @ 2021-06-16 14:24 cbaa 阅读(126) 评论(0) 推荐(0) 编辑
摘要:上一个例子介绍了INavigationAware中的OnNavitationTo,这次是第二个实现函数。 IsNavitationTarget,这个名字有点误导,真实的作用是,当从其它页面导航至本页面的时候,首先会调用IsNavigationTarget,IsNavigationTarget返回一个 阅读全文
posted @ 2021-06-16 11:26 cbaa 阅读(133) 评论(0) 推荐(0) 编辑
摘要:Navigation Participation,不知翻译方法,意思是对导航过程的参与,触发事件,类似离开导航目标和进入导航的回调 在VM中,增加一个接口 ,然后实现导航事件 public class ViewAViewModel : BindableBase, INavigationAware { 阅读全文
posted @ 2021-06-16 11:04 cbaa 阅读(124) 评论(0) 推荐(0) 编辑
摘要:同17相比,在导航方法中增加了回调函数 private void Navigate(string navigatePath) { if (navigatePath != null) _regionManager.RequestNavigate("ContentRegion", navigatePat 阅读全文
posted @ 2021-06-16 10:13 cbaa 阅读(132) 评论(0) 推荐(0) 编辑
摘要:本例是基础的导航应用 在窗口中布局了2个按钮,一个区域 <DockPanel LastChildFill="True"> <StackPanel Orientation="Horizontal" DockPanel.Dock="Top" Margin="5" > <Button Command="{ 阅读全文
posted @ 2021-06-16 09:52 cbaa 阅读(135) 评论(0) 推荐(0) 编辑
摘要:终于发现一个有趣的新知识了。 本例的核心是RegionContext,意思是一个区域的上下文。但与DataContext似乎并不相同。 先看一下整体思路。 在主窗体上只有一个Region: <Grid> <ContentControl prism:RegionManager.RegionName=" 阅读全文
posted @ 2021-06-12 13:16 cbaa 阅读(566) 评论(0) 推荐(0) 编辑
摘要:例14演示了怎样事件聚合器怎样发布与接收信息。 例15增加了一个事件的过滤功能,即设定一个条件,符合的才接收。 _ea.GetEvent<MessageSentEvent>().Subscribe(MessageReceived, ThreadOption.PublisherThread, fals 阅读全文
posted @ 2021-06-12 11:12 cbaa 阅读(115) 评论(0) 推荐(0) 编辑
摘要:这次是事件聚合器的应用。 事件聚合器应用第一步:定义一个事件聚合器,应该是一个可访问的公共区域,例14为它做了一个core的项目。代码很简单: using Prism.Events; namespace UsingEventAggregator.Core { public class Message 阅读全文
posted @ 2021-06-12 09:58 cbaa 阅读(152) 评论(0) 推荐(0) 编辑
摘要:本例和12的唯一区别,仅仅是在ViewModel中增加了一个IActiveAware,这决定了只有在Acitve状态的视图中才会执行自己ViewModel中的命令。 阅读全文
posted @ 2021-06-08 14:01 cbaa 阅读(186) 评论(0) 推荐(0) 编辑
摘要:本例中,主页是一个按钮,绑定了一个复合命令,然后下面一个TabControl <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> <RowDefinition Height="*" /> </Grid.RowDefinitions> 阅读全文
posted @ 2021-06-08 10:41 cbaa 阅读(128) 评论(0) 推荐(0) 编辑
摘要:本例的知识点,全在ViewModel中,看代码: 1 public class MainWindowViewModel : BindableBase 2 { 3 private bool _isEnabled; 4 public bool IsEnabled 5 { 6 get => _isEnab 阅读全文
posted @ 2021-06-08 09:44 cbaa 阅读(115) 评论(0) 推荐(0) 编辑
摘要:作用同上节,这里是用修改注册的方式自定义View和ViewModel的关联。 protected override void ConfigureViewModelLocator() { base.ConfigureViewModelLocator(); // type / type //ViewMo 阅读全文
posted @ 2021-06-07 20:32 cbaa 阅读(80) 评论(0) 推荐(0) 编辑
摘要:上个例子跳过了ViewModelLocator,因是采用约定的方式最为方便。 如果有人要修改约定,自定义view和viewModel的默认自动定位方式,怎么办呢? 在app.xaml.cs重写以下方法: protected override void ConfigureViewModelLocato 阅读全文
posted @ 2021-06-07 20:29 cbaa 阅读(75) 评论(0) 推荐(0) 编辑
摘要:这一例只是说明ViewModelLocator的使用,没有难度,跳过。 阅读全文
posted @ 2021-06-07 19:47 cbaa 阅读(90) 评论(0) 推荐(0) 编辑
摘要:这一节使用xaml标记甚为不解。 本节注册module 的方式同directory一节很类似。在那一节中,用工厂方法创建一模块目录: protected override IModuleCatalog CreateModuleCatalog() { return new DirectoryModul 阅读全文
posted @ 2021-06-07 19:44 cbaa 阅读(82) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示