无法在Silverlight 4中的Canvas中定位Rectangle

时间:2010-12-03 05:29:01

标签: silverlight silverlight-4.0

我是SL的新手。我刚写了一个绘制矩形和直线的简单应用程序。当我尝试定位矩形时,它没有任何效果,总是把它放在右下角:

Canvas.SetLeft(r, 100);
Canvas.SetTop(r, 100);

当我尝试使用SetValue时,应用程序挂起(即卡在浏览器中的加载动画中):

r.SetValue(Canvas.LeftProperty, 10);
r.SetValue(Canvas.TopProperty, 10);

有没有人经历过这样的事情,和/或知道怎么过去?

[编辑]以下是更完整的来源:

    public MainPage()
    {
        InitializeComponent();

        Rectangle r = new Rectangle() {
            Stroke = new SolidColorBrush(Colors.Black),
            Width = 100,
            Height = 20,
            Fill = new SolidColorBrush { Color = Color.FromArgb(80, 143, 12, 28) }
        };
        //r.SetValue(Canvas.LeftProperty, 10);
        //r.SetValue(Canvas.TopProperty, 10);
        Canvas.SetLeft(r, 100);
        Canvas.SetTop(r, 100);
        this.LayoutRoot.Children.Add(r);

        var line = new Line() {
            Stroke = new SolidColorBrush(Colors.Black),
            X1 = 10, Y1 = 10, X2 = 100, Y2 = 200
        };
        LayoutRoot.Children.Add(line);
    }

我已尝试在SetValue / SetLeft之前调用LayoutRoot..Add调用,但似乎没有任何区别。

1 个答案:

答案 0 :(得分:0)

试试这个:


        this.LayoutRoot.Children.Add(r);
        Canvas.SetLeft(r, 100);
        Canvas.SetTop(r, 100);

而不是:


        Canvas.SetLeft(r, 100);
        Canvas.SetTop(r, 100);
        this.LayoutRoot.Children.Add(r);

更新:它已得到修复,因为在XAML中,默认情况下它是GridRoot的网格标记。将其更改为canvas标签后,它不再卡住。