我是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调用,但似乎没有任何区别。
答案 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标签后,它不再卡住。