Ich habe eine TableView in iOS und in meinem ViewModel, ich habe eine Eigenschaft zu Selected Item in TableView, aber ich kann nicht das ausgewählte Objekt für diese Eigenschaft binden. Wie kann ich das machen? Mein Projekt ist plattformübergreifend. Ich habe ein Android-Projekt und ein iOS-Projekt. In Android-Projekt habe ich die Bindung:MvvmCross - wie an SelectedItem in iOS TableView zu binden?
<Mvx.MvxListView
android:id="@+id/lstViewTasks"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:clickable="true"
android:focusableInTouchMode="true"
android:choiceMode="multipleChoice"
local:MvxBind="ItemsSource Tasks; SelectedItem SelectedTask; ItemClick ShowTaskCommand"
local:MvxItemTemplate="@layout/projectmytasksitem" />
, aber ich kann nicht eine gleichwertige Bindung in iOS.
, dass meine Tableviewcontroller ist:
[Register("ProjectMyTasksViewc")]
public class ProjectMyTasksViews : MvxTableViewController<ProjectMyTasksViewModel>
{
//other things
var source = new MvxSimpleTableViewSource(TableView, ProjectMyTasksItem.Key, ProjectMyTasksItem.Key);
TableView.Source = source;
this.CreateBinding(source).To<ProjectMyTasksViewModel>(viewModel => viewModel.Tasks).Apply();
this.CreateBinding(source).For(s => s.SelectedItem).To<ProjectMyTasksViewModel>(viewModel => viewModel.SelectedTask).Apply();
this.CreateBinding(source).For(tableSource => tableSource.SelectionChangedCommand).To<ProjectMyTasksViewModel>(viewModel => viewModel.ShowTaskCommand).Apply();
}
Hier ist meine Viewmodel:
public class ProjectMyTasksViewModel : MvxViewModel
{
public Action ShowTaskCommandAction { get; set; }
private IList<Task> _tasks;
public IList<Task> Tasks
{
get { return _tasks; }
set { _tasks = value; RaisePropertyChanged(() => Tasks); }
}
private Task _selectedTask;
public Task SelectedTask
{
get { return _selectedTask; }
set { _selectedTask = value; RaisePropertyChanged(() => SelectedTask); }
}
private MvxCommand _showTaskCommand;
public MvxCommand ShowTaskCommand
{
get
{
_showTaskCommand = _showTaskCommand ?? (_showTaskCommand = new MvxCommand(ExecuteShowTaskCommand));
return _showTaskCommand;
}
}
private void ExecuteShowTaskCommand()
{
if (!SelectedTask.IsCompleted)
{
ShowTaskCommandAction?.Invoke();
}
}
}
Welches Problem tritt bei der Bindung von SelectedItem auf? Irgendwelche Kompilierungs- oder Laufzeitfehler? Oder wird 'SelectedTask' gerade gesetzt? – Plac3Hold3r
Ich hatte eine NullReferenceException. Die Eigenschaft SelectedTask in ViewModel ist null. –
Könnten Sie bitte den Teil Ihres ViewModel mit 'SelectedItem',' ShowTaskCommand' und wo die NullReferenceException auftritt? – Plac3Hold3r