C# mvvmcross windows应用商店集合ViewSource错误

C# mvvmcross windows应用商店集合ViewSource错误,c#,data-binding,windows-store-apps,winrt-xaml,mvvmcross,C#,Data Binding,Windows Store Apps,Winrt Xaml,Mvvmcross,当我试图为我的列表框设置ItemsSource(或为我的MyCollection设置Source,这是筛选、排序和分组数据所必需的)时,Windows应用商店(或Win RT)应用程序中的mvvmcross有一个问题 当我为我的ListBox设置ItemsSource时,我立即在这行代码中得到一个null引用错误: ListBox.ItemsSource = ViewModel.Tasklist; 我检查了ViewModel,它等于Null,我不知道为什么 这似乎很奇怪,因为当我在XAML中使

当我试图为我的
列表框设置
ItemsSource
(或为我的
MyCollection设置
Source
,这是筛选、排序和分组数据所必需的)时,Windows应用商店(或Win RT)应用程序中的mvvmcross有一个问题

当我为我的
ListBox
设置
ItemsSource
时,我立即在这行代码中得到一个
null引用
错误:

ListBox.ItemsSource = ViewModel.Tasklist;
我检查了
ViewModel
,它等于
Null
,我不知道为什么

这似乎很奇怪,因为当我在XAML中使用这段代码时,它工作得很好,但我需要使用
collectionviewsource

XAML (WinRTTasks.Views.FirstView.xaml):

    <ListBox ItemsSource="{Binding Tasklist}" Height="208">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <TextBlock Text="{Binding Title }"  FontSize="30"></TextBlock>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
XAML(WinRTTasks.Views.FirstView.XAML):

但是当我使用这段代码时,我在更新列表框中的项目时遇到了问题, 因为启动应用程序后,我甚至看不到列表框中的任何项目

public FirstView()
{   
    this.InitializeComponent();

    this.Loaded += FirstView_Loaded;
}

void FirstView_Loaded(object sender, RoutedEventArgs e)
{            
    ListBox1.ItemsSource = ViewModel.Tasklist;            
}
任务列表是可观察的集合:

private ObservableCollection<TasklistViewModel> _tasklist = new ObservableCollection<TasklistViewModel>();
public ObservableCollection<TasklistViewModel> Tasklist
{
    get { return _tasklist; }
    set
    {
        _tasklist = value;
        RaisePropertyChanged(() => Tasklist);                
    }
}
private observedcollection\u tasklist=new observedcollection();
公共可观察收集任务列表
{
获取{return\u tasklist;}
设置
{
_任务列表=值;
RaisePropertyChanged(()=>任务列表);
}
}

提前谢谢

看起来您正在访问初始化前的“ListBox”(可能还有“ViewModel”),这将导致空引用错误。通常,您希望添加一个“已加载”的处理程序,并在其中进行控制初始化

试试这个:

public sealed partial class FirstView : MvxStorePage
{
    public new FirstViewModel ViewModel
    {
        get { return (FirstViewModel)base.ViewModel; }
        set { base.ViewModel = value; }
    }

    public FirstView()
    {
        this.InitializeComponent();

        this.Loaded += FirstView_Loaded;
    }

    void FirstView_Loaded(object sender, RoutedEventArgs e)
    {
        ListBox.ItemsSource = ViewModel.Tasklist;
    }
}

+1-在mvx中,viewmodel在第一次导航时加载,非常感谢!这对我来说真的很有用!但是现在,我在XAML上遇到了一个新问题。
private void ApplyFilterButton2_Click(object sender, RoutedEventArgs e)
{
    ViewModel.DoApplyFilter();
    ListBox1.ItemsSource = ViewModel.Tasklist;
}
public FirstView()
{   
    this.InitializeComponent();

    this.Loaded += FirstView_Loaded;
}

void FirstView_Loaded(object sender, RoutedEventArgs e)
{            
    ListBox1.ItemsSource = ViewModel.Tasklist;            
}
private ObservableCollection<TasklistViewModel> _tasklist = new ObservableCollection<TasklistViewModel>();
public ObservableCollection<TasklistViewModel> Tasklist
{
    get { return _tasklist; }
    set
    {
        _tasklist = value;
        RaisePropertyChanged(() => Tasklist);                
    }
}
public sealed partial class FirstView : MvxStorePage
{
    public new FirstViewModel ViewModel
    {
        get { return (FirstViewModel)base.ViewModel; }
        set { base.ViewModel = value; }
    }

    public FirstView()
    {
        this.InitializeComponent();

        this.Loaded += FirstView_Loaded;
    }

    void FirstView_Loaded(object sender, RoutedEventArgs e)
    {
        ListBox.ItemsSource = ViewModel.Tasklist;
    }
}