我有這種情況。 在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'。 –