使用silverlight构建一个图形化流程设计器(二)
2009-04-25 12:05:15 来源:WEB开发网另外一个需要仔细考虑的是,当拖动规则,并且将端点移动到活动上时,进行规则和活动关联的时机。有以下几个时机可以考虑:
l 拖动规则进入活动范围。(活动的MouseEnter事件)
l 拖动规则结束后,放开鼠标。
对于第一种情况,当拖动规则并且进入互动范围时,无法触发活动的MouseEnter事件。暂时无法解决。(但是在放开鼠标,并且在活动上移动时,此时触发MouseEnter事件。但是这样做会存在某些特定的bug)。因此使用第二种方法进行关联,也就是在规则的MouseLeftButtonUp事件中遍历当前所有的活动,检查规则是否处于活动的范围内,如果在,那么就进行关联。
3.2.1 xaml
下面的代码描述了规则类的xaml
1<UserControl x:Class="Shareidea.Web.UI.Control.Workflow.Designer.Rule"
2 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4 MouseEnter="UserControl_MouseEnter"
5 MouseLeave="UserControl_MouseLeave"
6 >
7 <Canvas Canvas.ZIndex="100" >
8 <Ellipse Name="begin" Canvas.Top="0" Canvas.Left="0" Canvas.ZIndex="100"
9 Width="10" Height="10" Fill="White"
10 Stroke="Black" StrokeThickness="0"
11 MouseLeftButtonDown="Point_MouseLeftButtonDown"
12 MouseLeftButtonUp="Point_MouseLeftButtonUp"
13 MouseMove="Point_MouseMove"
14 >
15 </Ellipse>
16 <Line Name="line" Canvas.ZIndex="50"
17 X1="5" Y1="5" X2="45" Y2="45"
18 Stroke="#336699" StrokeThickness="5"
19 MouseLeftButtonDown="Line_MouseLeftButtonDown"
20 MouseLeftButtonUp="Line_MouseLeftButtonUp"
21 MouseMove="Line_MouseMove"
22 >
23 </Line>
24 <Canvas Canvas.Top="40" Canvas.Left="40" Name="end" Canvas.ZIndex="100"
25 MouseLeftButtonDown="Point_MouseLeftButtonDown"
26 MouseLeftButtonUp="Point_MouseLeftButtonUp"
27 MouseMove="Point_MouseMove">
28
29 <Ellipse
30 Width="10" Height="10" Fill="Black"
31 Stroke="Black" StrokeThickness="1" >
32 </Ellipse>
33 </Canvas>
34 <HyperlinkButton Canvas.ZIndex="1000" MouseLeave="HyperlinkButton_MouseLeave" Foreground="Red" Padding="10 5 5 5" Width="65" Height="25" Canvas.Left="50" Background="Yellow" Name="btnDelete" Click="HyperlinkButton_Click" ClickMode="Release" Content="删除规则" ></HyperlinkButton>
35 </Canvas>
36</UserControl>
37
Tags:使用 silverlight 构建
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接