在usercontrol中使用observablecollection监视撤消框架

时间:2016-04-29 13:57:08

标签: c# wpf user-controls observablecollection undo-redo

我的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中的命令没有做任何事情,但因为我是初学者,我不确定。任何提示? 谢谢

0 个答案:

没有答案