我正在使用silverlight在asp.net中處理流程類型的應用程序..我是Silvelight的初學者,使用SHAPE動態創建元素(矩形,橢圓,線..)代碼隱藏的線對象(c#)在Silverlight中使用線條連接兩個動態創建的形狀
這些形狀將會動態生成,這意味着我將在後端調用Web服務以確定需要創建多少個對象/形狀。一旦確定,我需要將物體/形狀連接在一起。
如何在流程圖中使用Silverlight中的線條連接動態創建的形狀。
我讀了下面的文章,但它不是爲我工作,的ActualHeight & ActualWidth的形狀值爲0 Connecting two shapes together, Silverlight 2
這裏是我的MainPage.xaml中
<UserControl x:Class="LightTest1.MainPage">
<Canvas x:Name="LayoutRoot" Background="White">
<Canvas x:Name="MyCanvas" Background="Red"></Canvas>
<Button x:Name="btnPush" Content="AddRectangle" Height="20" Width="80" Margin="12,268,348,12" Click="btnPush_Click"></Button>
</Canvas>
代碼背後MainPage.xaml.cs
StackPanel sp1 = new StackPanel();
public MainPage()
{
InitializeComponent();
sp1.Orientation = Orientation.Vertical;
MyCanvas.Children.Add(sp1);
}
Rectangle rect1;
Rectangle rect2;
Line line1;
private void btnPush_Click(object sender, RoutedEventArgs e)
{
rect1 = new Rectangle()
{
Height = 30,
Width = 30,
StrokeThickness = 3,
Stroke = new SolidColorBrush(Colors.Red),
};
sp1.Children.Add(rect1);
rect2 = new Rectangle()
{
Height = 30,
Width = 30,
StrokeThickness = 3,
Stroke = new SolidColorBrush(Colors.Red),
};
sp1.Children.Add(rect2);
connectShapes(rect1, rect2);
}
private void connectShapes(Shape s1, Shape s2)
{
var transform1 = s1.TransformToVisual(s1.Parent as UIElement);
var transform2 = s2.TransformToVisual(s2.Parent as UIElement);
var lineGeometry = new LineGeometry()
{
StartPoint = transform1.Transform(new Point(1, s1.ActualHeight/2.0)),
EndPoint = transform2.Transform(new Point(s2.ActualWidth, s2.ActualHeight/2.0))
};
var path = new Path()
{
Data = lineGeometry,
Stroke = new SolidColorBrush(Colors.Green),
};
sp1.Children.Add(path);
}
我在按鈕單擊事件中所做的只是添加兩個矩形形狀,並用線連接它們(如流程圖)。 請所說的其實是錯誤的,我的代碼..