ich folgendes erreichen will:aktualisieren CheckBox und Änderung listitem entsprechenden
Funktionalität der IsDeleteBtnShow
Eigenschaft im MyViewModel
ist ein Löschsymbol angezeigt werden, wenn eine der Checkbox Stück wahr ist. Da jedoch die Eigenschaft der Checkbox im ListViewModel
zugänglich ist, muss ich dieses Update von ListViewModel
an MyViewModel
weitergeben.
Allerdings bekomme ich null Ausnahme in der ListItemViewModel
. Aber wenn ich ListItemViewModel
Konstruktor parent
aufrufen ist nicht null. Ich frage mich, was ich falsch mache?
MyViewModel.cs
public class MyViewModel:MvxViewModel
{
private ObservableCollection<ListItemViewModel> _myListViews;
public ObservableCollection<ListItemViewModel> MyListViews
{
get { return _myListViews; }
set
{
_myListViews= value;
RaisePropertyChanged(() => MyListViews);
}
}
private bool _isDeleteBtnShow = false;
public bool IsDeleteBtnShow
{
get {
return _isDeleteBtnShow;
}
set {
_isDeleteBtnShow = value;
RaisePropertyChanged(() => IsDeleteBtnShow);
}
}
public void Init(string myId)
{
List<ListItemViewModel> allListItems = new List<ListItemViewModel>();
allListItems = _myService.GetAllItems(myId);
foreach (var myTest in allListItems)
{
_myListViews.Add(ListItemViewModel.CreateViewModel(myTest));
}
ListItemViewModel obj = new ListItemViewModel(this);
}
}
ListItemViewModel.cs
public class ListItemViewModel
{
public int Id { get; set; }
public string Text { get; set; }
private bool _isChecked;
public DateTime Date { get; set; }
readonly MyViewModel _parent;
public ListItemViewModel()
{
// parameterless constructor
}
public ListItemViewModel(MyViewModel parent)
{
// _parent is not null here
_parent = parent;
}
public static ListItemViewModel CreateViewModel(Test entity)
{
if (entity == null)
{
return null;
}
return new ListItemViewModel
{
Date = entity.Date,
IsSelected = entity.IsSelected,
};
}
public ICommand CheckBoxSelectionCommand
{
get
{
return new MvxCommand(() =>
{
var isChecked = IsSelected;
// the following _parent is null
_parent.IsDeleteBtnShow = true;
});
}
}
private bool _isSelected;
public bool IsSelected
{
get { return _isSelected; }
set
{
_isSelected = value;
RaisePropertyChanged(() => IsSelected);
}
}
public bool IsChecked
{
get { return _isChecked; }
set
{
_isChecked = value;
}
}
}
_once Benutzer es ändern, möchte ich update_ mag - do Sie meinen, wenn das ViewModel vom Benutzer über das von Ihnen verwendete Framework zurückkommt? Und ruft das den erforderlichen Konstruktor oder den Standardkonstruktor? – stuartd
Die 'IsDeleteBtnShow' -Eigenschaft im' MyViewModel' dient zum Anzeigen oder Ausblenden des Löschsymbols, wenn eines der Kontrollkästchen des Elements entsprechend wahr oder falsch ist. Da die Eigenschaft der Checkbox im 'ListViewModel' zugänglich ist, muss ich dieses Update von' ListViewModel' nach 'MyViewModel' übergeben. – hotspring