本文配套源碼
接著之前的內容,在開始之前有幾點說明:
1、我無法使用博客圓的上傳圖片功能,因此許多圖片就省略了。
2、代碼放在codeplex上(http://workflowdesigner.codeplex.com/),如果您有興趣的話,歡迎加入一起開發。
3、在線演示:http://219.153.66.61/wf
三、類的設計
在進行類設計之前,先說一下silverlight中使用怎麼表示上面描述的類。在silverlight可以使用 用戶控件( silverlight user contro)來描述各種具有用戶界面的類,如上文所講的活動類,規則類。操作很簡單,在vs.net 2008中增加一個新的 silverlight user contro就可以了。其實是一個xaml文件。在xaml文件中布局用戶界面,在對應的xam.cs文件中編寫後台方法即可。
需要說一下的是,在進行鼠標拖動活動或者規則移動時,規則和活動的動態定位使用的是相對於容器來的相對位置,也就是使用Canvas.Top和Canvas.Left屬性進行定位。
還有一點需要說明的就是,對於活動和規則的關聯有幾點需要注意。
一個規則可以關聯到兩個不同的活動,一個為起始活動(起始端點關聯)。一個為終結活動(終結端點關聯)
規則的起始活動和終結活動不能為同一個活動。
任何兩個規則,他們的起始活動和終結活動不能相同,也就是說在不同的兩個活動之間,不能有重復的規則關聯。
3.1 活動類的設計(Activity)
活動代表工作流中的一個活動節點,在流程圖上表現為一個方框圖,可以被拖拽,可以關聯到一個規則的開始或者結束。
3.1.1 Xam
下面的代碼表示了活動類的外觀
1<UserControx:Class="Shareidea.Web.UI.Contro.Workflow.Designer.Activity"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xam/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xam"
4 MouseLeftButtonDown="UserContro_MouseLeftButtonDown"
5 MouseLeftButtonUp="UserContro_MouseLeftButtonUp"
6 MouseMove="UserContro_MouseMove"
7 MouseEnter="UserContro_MouseEnter"
8 MouseLeave="UserContro_MouseLeave"
9 Width="100" Height="60" >
10 <Canvas Name="container" >
11 <Rectangle HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Fil="Green" />
12 <Border CornerRadius="10" Background="Green" Opacity="0.9" Width="100" Height="60" >
13 <TextBox Name="Title" Text="新建活動" BorderBrush="Green" FontSize="12" Background="Green"
14 Height="30" Width="60" MouseEnter="TextBox_MouseEnter" ></TextBox>
15 </Border>
16 <HyperlinkButton Canvas.ZIndex="10000" Padding="10 5 5 5" MouseLeave="HyperlinkButton_MouseLeave" Foreground="Red" Width="65" Height="25" Canvas.Top="50" Canvas.Left="100" Background="Yellow" Name="btnDelete" Click="HyperlinkButton_Click" ClickMode="Release" Content="刪除活動" ></HyperlinkButton>
17 </Canvas>
18</UserContro>
19
從上面代碼可以看出,活動類主要包含一個矩形的圖形,還有一個刪除按鈕。圖形顯示如下: