2010-12-03 21 views
2

我是SL新手。我只寫了一個繪製矩形和線條的簡單應用程序。當我嘗試將它定位沒有任何效果的矩形,並始終把它在右下角:無法在Silverlight中的Canvas中定位矩形4

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); 
    } 

我試圖把LayoutRoot..Add調用的SetValue前/ SetLeft但它似乎並沒有任何區別。

+1

我知道這可能看起來像一個愚蠢的問題,但是你的繪製元素實際上是在一個畫布元素內部,而這個畫布元素本身就在根視覺中? – 2010-12-03 05:50:30

+1

不是一個愚蠢的問題,特別是因爲我說這是我的第一個SL應用程序:-) 我已經添加了上面更完整的來源。 – Greencpp 2010-12-03 06:17:34

回答

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它是默認的網格標籤爲LayoutRoot。將其更改爲畫布標籤後,不再卡住。

相關問題