我得到了: PresentationFramework.dll中出现'System.NullReferenceException'类型的第一次机会异常
当我为 LessonPlannerViewModel 类的构造函数使用参数时。
我使用datatemplateselector类在每周/每日视图之间切换。
public class ApplicationNavigationTemplateSelector : DataTemplateSelector
{
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (item is LessonPlannerViewModel)
{
var vm = item as LessonPlannerViewModel;
Window window = Application.Current.MainWindow;
if (vm.IsDailyView)
return window.FindResource("dailyViewTemplate") as DataTemplate;
else
return window.FindResource("weeklyViewTemplate") as DataTemplate;
}
return base.SelectTemplate(item, container);
}
}
public LessonPlannerViewModel(DateTime asOfDate)
{
_asOfDate = asOfDate;
if(_isDailyView)
LoadDailyData();
if(_isWeeklyView)
LoadWeeklyData();
...
这是不允许的?没有参数,我没有例外......
我错了什么?
编辑:没有我将参数更改为整数并得到更好的消息; P
XamlParseException => '在类型'TBM.ViewModel.LessonPlannerViewModel'上找不到匹配的构造函数。您可以使用Arguments或FactoryMethod指令来构造此类型。行号“13”和行位置“10”。
好的,现在可以理解了,
<UserControl.Resources>
<ViewModel:LessonPlannerViewModel x:Key="LessonPlannerViewModelID" />
</UserControl.Resources>
没有参数。
那现在该怎么办?
答案 0 :(得分:0)
您可以使用中介模式在初始化后将数据发送到viewmodel。 (使用不带任何参数的viewmodel构造函数)
我使用Laurent Bugnion的MVVM Light ToolKit。一个非常好的,轻量级的mvvm框架。 这包括一个名为Messenger
的调解员否则,您会找到许多中介模式的来源:Google Search mvvm mediator