【发布时间】:2014-01-24 10:42:29
【问题描述】:
我是 Silverlight MVVM 的新手。 我有一个要求在父子层次结构中显示复选框。 加载页面时,如果选中子项,则还应选中父复选框。
我创建了一个如下的 ViewModel
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));
}
}
}
在我的 main.xaml.cs 中,我创建了递归方法,该方法将创建复选框的父子层次结构。 单击子复选框时,父复选框将被选中,因为我已在我的 VM 中添加了事件处理程序(CheckboxStateChanged)。但是在页面加载时,如果选中子复选框,则父复选框也会被选中,我无法做到这一点..请帮助.
请注意,在我获得孩子身份之前,我无法让父母检查,一旦我获得孩子身份,我不知道如何回到父母身边。
父虚拟机包含与子虚拟机相同的列表(即公共列表 TestViewModel1)
【问题讨论】:
标签: wpf silverlight mvvm