使用silverlight構建一個工作流設計器(十七)-持久化數據到數據庫—設計webservices接口
在開始之間,先說下程序增加的一個小功能,就是給容器增加網格線的功能,使得容器看上去類似下面的樣子
當然可以有兩種方法來實現,一種就是使用背景圖片,但本文一貫的原色就是少用圖片,多用silverlight的畫圖功能來實現,這些網格都可以使用xaml中的Line對象來實現。為此我們需要動態設定一個Canvas,然後把這些動態生成的Line對象添加到Canvas中,最後再把Canvas添加到容器裡面,這裡講的比較簡單,但是在程序中,還需要考慮回滾,Zindex的影響。下面的代碼描述了動態增加網格線的功能。
Code
GridLinesContainer.Children.Clear();
SolidColorBrush brush = new SolidColorBrush();
brush.Color = Color.FromArgb(255, 160, 160, 160);
// brush.Color = Color.FromArgb(255, 255, 255, 255);
double thickness = 0.3;
double top = 0;
double left = 0;
double width = cnsDesignerContainer.Width;
double height = cnsDesignerContainer.Height;
double stepLength = 40;
double x, y;
x = left + stepLength;
y = top;
while (x < width + left)
{
Line line = new Line();
line.X1 = x;
line.Y1 = y;
line.X2 = x;
line.Y2 = y + height;
line.Stroke = brush;
line.StrokeThickness = thickness;
line.Stretch = Stretch.Fil;
GridLinesContainer.Children.Add(line);
x += stepLength;
}
x = left;
y = top + stepLength;
while (y < height + top)
{
Line line = new Line();
line.X1 = x;
line.Y1 = y;
line.X2 = x + width;
line.Y2 = y;
line.Stroke = brush;
line.Stretch = Stretch.Fil;
line.StrokeThickness = thickness;
GridLinesContainer.Children.Add(line);
y += stepLength;
}