を対応する変更私は次のことを達成したい:項目のチェックボックスのいずれかに該当する場合MyViewModel
でIsDeleteBtnShow
財産の更新チェックボックスとのListItem
機能が削除アイコンを表示することです。しかし、ListViewModel
でチェックボックスのプロパティにアクセスできるので、このアップデートをListViewModel
からMyViewModel
に渡す必要があります。
しかし、ListItemViewModel
ではnull例外が発生しています。しかし、ListItemViewModel
というコンストラクタを呼び出すと、parent
はnullではありません。私は何が間違っているのだろうか?
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のユーザーがそれを変更し、私はupdate_したい - DOをViewModelが使用しているフレームワークを介して、ユーザーから戻ってきたときを意味しますか?そして、それは必要なコンストラクタ、またはデフォルトのコンストラクタを呼び出すことですか? – stuartd
'MyViewModel'の' IsDeleteBtnShow'プロパティは、アイテムのチェックボックスのいずれかがtrueまたはfalseであれば削除アイコンを表示または非表示にします。しかし、 'ListViewModel'でチェックボックスのプロパティにアクセスできるので、この更新を' ListViewModel'から 'MyViewModel'に渡す必要があります。 – hotspring