Невозможно расположить прямоугольник на холсте в Silverlight 4 - PullRequest
2 голосов
/ 03 декабря 2010

Я новичок в SL. Я только что написал простое приложение, рисующее прямоугольник и линию. Когда я пытаюсь расположить прямоугольник, он не действует и всегда помещает его в правый нижний угол:

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

Когда я пытаюсь использовать SetValue, приложение зависает (т.е. застревает при загрузке анимации в браузере):

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

Кто-нибудь испытывал что-то подобное и / или знает, как пройти через это?

[EDIT] Вот более полный источник:

    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 Ответ

0 голосов
/ 03 декабря 2010

Попробуйте это:


        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. После изменения его на тэг canvas, он больше не застревает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...