Caliburn.micro将参数从一个屏幕传递到另一个屏幕

Puti26

我有这种情况。在ShellView中,我有两个数据选择器:

<DatePicker Grid.Column="0" Margin="8" Padding="5" x:Name="from"/>
<DatePicker Grid.Column="1" Margin="8" Padding="5" x:Name="to"/>

和一个按钮

<Button Grid.Row="2" cal:Message.Attach="[Action RunOtherView($dataContext)]"  Content="Go" Margin="8" HorizontalAlignment="Center"/>

我希望当我选择两个日期并按下按钮后,这两个日期将在SecondViewModel中传递,例如在我的案例中的List Parameters中。但是在SecondViewModel的构造函数中,“参数”始终为null。错误在哪里?如何将这些参数从一个屏幕传递到另一个屏幕?谢谢

public class ShellViewModel : Conductor<IScreen>.Collection.OneActive, IShell
{
    protected override void OnActivate()
    {
        base.OnActivate();
        ActivateItem(IoC.Get<IMainViewModel>());
    }

    public void RunOtherView()
    {
        var crvm = IoC.Get<ISecondViewModel>();
        crvm.Parameters = new List<DateTime>();
        crvm.Parameters.Add((DateTime)d.from);
        crvm.Parameters.Add((DateTime)d.to);
        ActivateItem(crvm);                                    
    }
}



public class MainViewModel : Screen, IMainViewModel
{
    public DateTime? from { get; set; }
    public DateTime? to { get; set; }
}



public class SecondViewModel : Screen, ISecondViewModel
{  
        public List<DateTime> Parameters { get; set; }

        protected override void OnActivate()
        {
            base.OnActivate();
        }

        public SecondViewModel()
        {
            //Parameters is always null
            PersonalList = CollectionViewSource.GetDefaultView(Db.UpdateInformation(Parameters));
        }


        public override void TryClose(bool? dialogResult)
        {
            TryClose(dialogResult);
        }
}
奥斯卡·马特(Oscar Mateu)

ViewModel可以通过EventAggregator进行通信。您需要创建事件,并在侦听的视图模型中告诉他们期望的事件。我通常将其放置在“事件”文件夹中。

看看文档

例:

事件:

    public class FooEvent
        {
           public FooEvent(bool foo) 
           {
               Foo = foo;
           }

         public bool Foo { get; private set; }
        }

第一屏

public class FirstViewModel : Screen
{
    private readonly IEventAggregator _events;

    [ImportingConstructor]
    public FirstViewModel(IEventAggregator events)
    {

       DisplayName = "First screen";
       _events = events;
    }


   public void PublishFooEvent()
   {
       _events.Publish(new FooEvent(true));
   }

第二屏

public class SecondViewModel : Screen, IHandle<FooEvent>
    {

    private readonly IEventAggregator events;

    [ImportingConstructor]
    public SecondViewModel(IEventAggregator events)
    {
        DisplayName = "Second screen";
        this.events = events;
        events.Subscribe(this);
    }

    public bool Bar{get;set;}

    public void Handle(FooEvent message)
    {
        Bar = message.Foo;
    }
}

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Caliburn Micro,对另一个ViewModel的消息/操作

来自分类Dev

Caliburn Micro,消息/动作到另一个ViewModel

来自分类Dev

从另一个ViewModel设置Caliburn.Micro ControlContent

来自分类Dev

Caliburn.micro-在另一个视图模型中通知属性改变的视图模型

来自分类Dev

React-native-将数据从一个屏幕传递到另一个屏幕

来自分类Dev

Android / Java将价值从一个屏幕传递到另一个屏幕并显示价值

来自分类Dev

原始参数传递到另一个屏幕

来自分类Dev

将参数从 SwitchNavigator 中的屏幕传递到 TabNavigator 中的另一个屏幕

来自分类Dev

如何通过reactnavigation v5将参数从一个屏幕传递到另一个屏幕

来自分类Dev

将值传递到另一个屏幕

来自分类Dev

将对象从一个屏幕传递到另一个屏幕 | 反应原生

来自分类Dev

React Native:使用navigationOptions将参数传递到另一个屏幕

来自分类Dev

是否可以将数据从一个屏幕会话复制到另一个屏幕会话?

来自分类Dev

将工作目录从一个终端屏幕复制到另一个屏幕

来自分类Dev

与ConfigurationManager耦合或将参数从一个传递到另一个

来自分类Dev

将参数从一个应用传递到另一个

来自分类Dev

将grunt参数从一个任务传递到另一个任务

来自分类Dev

将命名参数从一个Powershell脚本传递到另一个

来自分类Dev

将参数从一个脚本传递到另一个

来自分类Dev

Caliburn Micro Datagrid绑定

来自分类Dev

Caliburn Micro发布/订阅

来自分类Dev

Caliburn Micro,聚焦MV

来自分类Dev

将对象从一个视图传递到屏幕上的另一个视图

来自分类Dev

将屏幕从一个虚拟桌面移动到另一个

来自分类Dev

从一个屏幕导航到另一个屏幕时,未处理的承诺被拒绝

来自分类Dev

我如何使用道具在本机反应中从一个屏幕导航到另一个屏幕?

来自分类Dev

Rails-将参数从一个视图传递到另一个控制器

来自分类Dev

将构建参数从一个Jenkins项目传递到另一个Jenkins项目

来自分类Dev

Rails 4将参数从一个控制器传递到另一个

Related 相关文章

  1. 1

    Caliburn Micro,对另一个ViewModel的消息/操作

  2. 2

    Caliburn Micro,消息/动作到另一个ViewModel

  3. 3

    从另一个ViewModel设置Caliburn.Micro ControlContent

  4. 4

    Caliburn.micro-在另一个视图模型中通知属性改变的视图模型

  5. 5

    React-native-将数据从一个屏幕传递到另一个屏幕

  6. 6

    Android / Java将价值从一个屏幕传递到另一个屏幕并显示价值

  7. 7

    原始参数传递到另一个屏幕

  8. 8

    将参数从 SwitchNavigator 中的屏幕传递到 TabNavigator 中的另一个屏幕

  9. 9

    如何通过reactnavigation v5将参数从一个屏幕传递到另一个屏幕

  10. 10

    将值传递到另一个屏幕

  11. 11

    将对象从一个屏幕传递到另一个屏幕 | 反应原生

  12. 12

    React Native:使用navigationOptions将参数传递到另一个屏幕

  13. 13

    是否可以将数据从一个屏幕会话复制到另一个屏幕会话?

  14. 14

    将工作目录从一个终端屏幕复制到另一个屏幕

  15. 15

    与ConfigurationManager耦合或将参数从一个传递到另一个

  16. 16

    将参数从一个应用传递到另一个

  17. 17

    将grunt参数从一个任务传递到另一个任务

  18. 18

    将命名参数从一个Powershell脚本传递到另一个

  19. 19

    将参数从一个脚本传递到另一个

  20. 20

    Caliburn Micro Datagrid绑定

  21. 21

    Caliburn Micro发布/订阅

  22. 22

    Caliburn Micro,聚焦MV

  23. 23

    将对象从一个视图传递到屏幕上的另一个视图

  24. 24

    将屏幕从一个虚拟桌面移动到另一个

  25. 25

    从一个屏幕导航到另一个屏幕时,未处理的承诺被拒绝

  26. 26

    我如何使用道具在本机反应中从一个屏幕导航到另一个屏幕?

  27. 27

    Rails-将参数从一个视图传递到另一个控制器

  28. 28

    将构建参数从一个Jenkins项目传递到另一个Jenkins项目

  29. 29

    Rails 4将参数从一个控制器传递到另一个

热门标签

归档