저는 크로스 플랫폼 앱을 제작하기 위해 Mvvmcross에 우수한 Mvvmcross 및 Ninja Coder를 사용하고 있습니다. 내 창고 애플 리케이션을 위해 나는 닌자 코더를 사용하여 뷰와 뷰 모델을 만들었습니다. 또한 뷰에서 참조되는 UserControl을 만들었습니다. 따라서 동일한 뷰 모델을 User 컨트롤에도 바인딩해야합니다. viewmodel의 singleton 인스턴스에 사용자 정의 컨트롤의 데이터 컨텍스트를 설정하려고했습니다. 아래처럼 사용자 정의 컨트롤의 데이터 컨텍스트를 설정했습니다.MVVMCROSS에서 UserControl에 뷰 모델을 바인딩하는 방법은 무엇입니까?
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));
}
}
는 처음으로로드 할 때 내 UserControl을에서 그리드보기가 채워지고 있습니다. 그러나 주 뷰에서 컬렉션을 업데이트하기 위해 RefineCommand를 호출하면 usercontrol의 모눈 뷰가 업데이트되지 않습니다. 그리고 이전에 그 오류로 인해 모델을보기 위해 사용자 정의 컨트롤의 데이터 컨텍스트를 설정하는 것으로 추측하고 있습니다. 무엇이 잘못 될 수 있는지 알려주세요. 나는 며칠 동안 머리를 두드렸다.