我的UI项目是一个用户控件,稍后会在另一个应用程序中加载。
我想实现一个撤销/重做系统,所以我试图用MUF(Monitored Undo Framework)来做这件事。我正在测试滑块,一直到可观察的收集:
private ObservableCollection<double> _ChannelsAlpha = new ObservableCollection<double>(new[] { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 });
public ObservableCollection<double> ChannelsAlpha
{
get { return _ChannelsAlpha; }
set
{ //_ChannelsAlpha = value;
if (value == _ChannelsAlpha)
return;
DefaultChangeFactory.OnChanging(this, "ChannelsAlpha", _ChannelsAlpha, value, "ChannelsAlpha Changed");
_ChannelsAlpha = value;
OnPropertyChanged("ChannelsAlpha"); // Tells the UI that this property has changed.
}
}
我对usercontrol的命令绑定:
<UserControl.CommandBindings>
<CommandBinding Command="Undo" Executed="Undo_Executed" CanExecute="Undo_CanExecute" />
<CommandBinding Command="Redo" Executed="Redo_Executed" CanExecute="Redo_CanExecute" />
</UserControl.CommandBindings>
撤消功能如下所示:
private void Undo_Executed(object sender, ExecutedRoutedEventArgs e)
{
var undoRoot = UndoService.Current[this];
undoRoot.Undo();
}
我按照MUF上的文档示例,代码很长,所以我没有在这里复制/粘贴所有内容。但如果需要,我可以做到。
我认为XAML中的命令没有做任何事情,但因为我是初学者,我不确定。任何提示? 谢谢