我使用的是优秀的Mvvmcross和忍者编码器,用于Mvvmcross建立一个跨平台的应用程序。 对于我的Windows商店应用我创建了一个视图,并使用忍者编码器视图模型。 我也创建将在视图中引用的用户控件。 因此,我需要绑定同一个视图模型到用户控件也。 我一直在试图设置用户控制视图模型的单一实例的数据上下文。 我已经设置像下面的用户控件的数据上下文。
public sealed partial class SearchResultsGridViewControl : UserControl
{
private SearchresultsViewModel _viewModel;
public SearchResultsGridViewControl()
{
this.InitializeComponent();
_viewModel = Mvx.IocConstruct<SearchresultsViewModel>();
this.DataContext = _viewModel;
}
}
但是,当我在我的主要观点是指该用户控件,它引发的XAML说一个错误“对象引用不设置到对象的实例。无法创建SearchResultsGridViewControl的实例”。
这是我的视图模型:
public class SearchresultsViewModel : BaseViewModel
{
private ISearchResultsService _searchResultsService;
public SearchresultsViewModel(ISearchResultsService searchResultsService)
{
_searchResultsService = searchResultsService;
var items = _searchResultsService.DisplaySearchResults();
SchoolDetails = new ObservableCollection<School>(items);
}
private ObservableCollection<School> _schoolDetails;
public ObservableCollection<School> SchoolDetails
{
get { return _schoolDetails; }
set
{
_schoolDetails = value;
RaisePropertyChanged(() => SchoolDetails);
}
}
public ICommand RefineCommand
{
get
{
refineCommand = refineCommand ?? new MvxCommand(FilterSearchResultsBasedOnRefine);
return refineCommand;
}
}
public void FilterSearchResultsBasedOnRefine()
{
SchoolDetails = new ObservableCollection<School>(_searchResultsService.FilterSchoolsBasedOnRefine(MidDayMeals, PlayGround, DigitalClassroom, DayBoarding, TransportationFacility));
}
}
在我的用户网格视图加载时,第一次是越来越填充。 但是,当RefineCommand被称为更新从主视图集合,在用户控件网格视图不会得到更新。 而且我在设置用户控制视图模型的数据上下文猜测的,因为错误早些时候。 请让我知道什么可以去错了。 我一直在敲打我的脑袋一下好几天。