2013-12-13 36 views
0

在我正在处理的应用程序中,有userControls和一个propertyGrid来显示一些属性。当属性被加载,我改变它们在propertyGrid中的值时,我可以看到userControl也在更新。有一项功能可以撤消更改。为此,当用户选择编辑userControl时,我创建了一个userCopy的deepCopy并继续处理原始对象。当用户选择撤消的变化,我设置的副本我原来的对象:不绑定属性从propertyGrid到customUserControl

var control = temp.ViewModel.AllControls.FirstOrDefault(x => x.ViewModel.IsSelected); //finds selected userControl 
if (control == null) return; 

var t = (ISelectableViewModel)_copySelectedObject; 
control.ViewModel = t; // set old values to userControl   
SelectedObject = control.ViewModel; // load properties in propertyGrid 

的问题是,我的用户不会更新与撤销按钮被点击后的新值,(只有当我在代码编写control.ViewModel .Name = t.Name等)。另外我还有一个PropertyGrid的问题。它加载正确的值,但是当我更改属性时,它不会影响到我的userControl。我能做些什么来解决这个问题?

+0

你在ViewModel属性上实现了'INotifyPropertyChanged'接口吗? – Sheridan

+0

@Sheridan是的。我已经通过重置userControls datacontext来修复它。 – Sasha

回答

0

好的,我已经解决了。为此,我将userControl的datacontext更改为userControl的副本。希望这将有助于未来的某个人。

+0

“用户控制副本”是什么意思? –

+0

@RohitVats我的意思是UserControl的副本是在编辑UserControl属性之前创建的UserControl的一个deepCopy。 – Sasha