Welcome

首页 / 软件开发 / .NET编程技术 / WF4工作流设计器模型对Undo和Redo的支持

WF4工作流设计器模型对Undo和Redo的支持2010-12-27 博客园 生鱼片WF4的设计器模型中提供了UndoEngine类,提供设计时的Undo(撤销)和Redo(重做)功能。我们可以调用工作设计器的服务来启用Undo和Redo功能。主要涉及到下面几个类:

下面一个简单例子说明

1.WPF的Xaml部分如下:

<Window x:Class="CaryUndo.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sadt="clr-namespace:System.Activities.Presentation.Toolbox;assembly=System.Activities.Presentation"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
Title="MainWindow" Height="350" Width="525">
<Window.CommandBindings>
<CommandBinding Command="Undo" Executed="UndoHandle" />
<CommandBinding Command="Redo" Executed="RedoHandle" />
</Window.CommandBindings>
<Window.Resources>
<sys:String x:Key="AssemblyName">System.Activities, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35</sys:String>
</Window.Resources>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="2*"/>
<ColumnDefinition Width="7*"/>
<ColumnDefinition Width="3*"/>
</Grid.ColumnDefinitions>
<Border Grid.Column="0">
<sadt:ToolboxControl>
<sadt:ToolboxCategory CategoryName="Basic">
<sadt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}" >
<sadt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.Sequence
</sadt:ToolboxItemWrapper.ToolName>
</sadt:ToolboxItemWrapper>
<sadt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sadt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.WriteLine
</sadt:ToolboxItemWrapper.ToolName>
</sadt:ToolboxItemWrapper>
<sadt:ToolboxItemWrapper AssemblyName="{StaticResource AssemblyName}">
<sadt:ToolboxItemWrapper.ToolName>
System.Activities.Statements.Pick
</sadt:ToolboxItemWrapper.ToolName>
</sadt:ToolboxItemWrapper>
</sadt:ToolboxCategory>
</sadt:ToolboxControl>
</Border>
<Border Grid.Column="1" Name="DesignerBorder"></Border>
<Border Grid.Column="2" Name="PropertyBorder"/>
<Button Content="Undo" Command="Undo" Height="23" HorizontalAlignment="Left" Margin="9,179,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
<Button Content="Redo" Command="Redo" Height="23" HorizontalAlignment="Left" Margin="9,218,0,0" Name="button2" VerticalAlignment="Top" Width="75" />
</Grid>
</Window>