我有这种情况。 在ShellView我有两个datapicker:Caliburn.micro将参数从一个屏幕传递到另一个屏幕
<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。 但在SecondViewModel的构造函数中,“参数”始终为空。 错误在哪里?我如何将这些参数从一个屏幕传递到另一个屏幕? 由于
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);
}
}
对于'ViewModels'之间的沟通,你可以看到我的[答案](http://stackoverflow.com/questions/20868047/one-viewmodel-for-usercontrol-and-window-or-separate-viewmodels/20873276#20873276 )关于使用模式'Mediator'。 –