0

我得到了: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>

没有参数。

那么现在该怎么办呢?

4

1 回答 1

0

您可以在初始化后使用中介模式将数据发送到视图模型。(使用不带任何参数的视图模型构造函数)

我使用 Laurent Bugnion 的 MVVM Light ToolKit。一个非常好的、轻量级的 mvvm 框架。这包括一个名为Messenger的中介

否则你会发现很多中介者模式的来源:谷歌搜索 mvvm mediator

于 2010-04-26T14:16:11.773 回答