Silverlight MVVM을 처음 사용했습니다. 부모 하위 계층에 확인란을 표시해야한다는 요구 사항이 하나 있습니다. 하위 항목을 선택한 경우 페이지를로드하는 동안 부모 확인란도 선택되어야합니다.Silverlight MVVM : 하위 상태를 기준으로 상위 뷰 모델 업데이트 뷰 모델
내가 체크 박스의 부모 자식 계층을 생성합니다 재귀 적 방법을 만든 내 main.xaml.cs에서
public class TestViewModel : INotifyPropertyChanged
{
private string name;
private string percent;
private bool isChecked;
internal event EventHandler CheckboxStateChanged = delegate { };
private List<TestViewModel> testViewModel;
public List<TestViewModel> TestViewModel1
{
get { return testViewModel; }
set
{
testViewModel = value;
NotifyPropertyChanged("TestViewModel1");
}
}
public TestViewModel()
{
//IsChecked = true;
//Name = "Hello";
//Percent = "10";
}
public bool IsChecked
{
get { return isChecked; }
set
{
isChecked = value;
NotifyPropertyChanged("IsChecked");
CheckboxStateChanged(this, new EventArgs());
}
}
public event PropertyChangedEventHandler PropertyChanged;
protected void NotifyPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}
아래로 뷰 모델을 만들었습니다. 자식 체크 박스를 클릭하면 해당 VM에 대한 이벤트 핸들러 (CheckboxStateChanged)가 추가되었으므로 상위 체크 박스가 선택됩니다. 그러나 하위 페이지를로드 할 때 페이지로드시 상위 페이지도 체크 표시됩니다. 할 수 없습니다 .Pls 도움.
참고 자녀 상태를 얻을 때까지 부모를 확인할 수 없으며 부모 상태로 돌아갈 수있는 방법이 확실하지 않은 아동 상태가 표시됩니다.
부모 VM은 어린이와 같은 VM의 목록 (즉 공공 목록 TestViewModel1) 내가 올바른 당신이 부모의 체크 박스에 어린이 체크 박스 값을 bouble 할 수있는 방법을 찾고 질문을 이해한다면
ViewModel 논리에서도이 작업을 수행 할 수 있지만 위의 Beahvior는 "IsChecked"속성 이름을 구성 할 수 있으면 다시 사용할 수 있습니다. –