我有一些绑定到应用程序主窗口控件的集合,下面以简化形式显示。视图模型中还有许多其他元素(为了清晰而省略),它们都会按预期更新和工作。
我需要在另一个窗口中编辑集合的元素,并将编辑后的数据返回到原始集合中。
/// Example of the Collection and Properties
ObservableCollection<MyData> _MyCollection = new ObservableCollection<MyData>();
public ObservableCollection<MyData> MyCollection { get { return _MyCollection; } }
public class MyData : INotifyPropertyChanged
{
private bool cb_checked;
public string Param1 { get; set; }
public string Param2 { get; set; }
public bool myCheck
{
get { return cb_checked; }
set
{
if (cb_checked == value) return;
cb_checked = value;
RaisePropertyChanged("Checked");
}
}
}
我的问题是如何将集合中的一项传递到新窗口进行编辑。
我的想法是在窗口的构造函数中传递项目
Dialog.Edit window = new Dialog.Edit(_MyCollection[2] );
window.Owner = this;
window.Show();
我也试过这个,因为我读过我不能使用索引引用
var tmp = _MyCollection[2];
Dialog.Edit window = new Dialog.Edit( tmp);
window.Owner = this;
window.Show();
但这不起作用,并且在尝试访问元素时出现空异常。
如果我需要传递完整的集合,这也可以,因为它们都很小,即 < 50 件。
我必须以错误的方式解决这个问题,请有人解释一下如何正确地做到这一点。
非常感谢莎拉