Проблема с SetTop в приложении Silverlight WPF - PullRequest
0 голосов
/ 22 апреля 2009

Я не могу использовать свойство SetTop Canvas в приложении Silverlight. Ниже приведен минимальный код для воспроизведения проблемы

from System import TimeSpan
from System.Windows import Application, Duration, PropertyPath
from System.Windows.Controls import Canvas, TextBlock
from System.Windows.Media import SolidColorBrush, Colors
from System.Windows.Media.Animation import (
    DoubleAnimation, Storyboard, RepeatBehavior
)

root = Canvas()

root.Children.Clear()
root.Resources.Clear()
#root.Background = SolidColorBrush(Colors.Black)

parent = Canvas(Width = 100, Height = 100)
parent.Background = SolidColorBrush(Colors.Black)
parent.SetTop(root, 0)
parent.SetLeft(root, 0)

parent2 = Canvas(Width = 100, Height = 100)
parent2.Background = SolidColorBrush(Colors.Blue)
parent2.SetTop(root, 100)

root.Children.Add(parent)

Application.Current.RootVisual = root

Строка "parent2.SetTop (root, 100)" меняет позицию, в которой будет отображаться parent1.

Такое поведение удивительно. Я даже не добавляю parent2 как один из дочерних объектов, но он влияет на макет.

Может кто-нибудь объяснить, что я делаю не так?

1 Ответ

3 голосов
/ 22 апреля 2009

Я думаю, что вы используете SetTop "назад". SetTop устанавливает вложенное свойство дочернего элемента управления Canvas, выполняя это:

parent2.SetTop(root,100)

Устанавливает свойство Canvas.Top root равным 100 (не parent2) (поэтому, следовательно, будут также перемещены все дочерние элементы root) Что вы должны делать, это:

root.SetTop(parent, 0)

Что будет устанавливать свойство Canvas.Top родительского элемента равным 0.

Подробнее о MSDN .

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