Silverlight WPF应用程序中的SetTop问题

时间:2009-04-22 07:43:48

标签: wpf silverlight

我无法在Silverlight App中使用SetTop属性Canvas。以下是重现问题的最小代码

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 个答案:

答案 0 :(得分:3)

我认为你正在使用SetTop“向后”。 SetTop在Canvas的子控件上设置附加属性,这样做:

parent2.SetTop(root,100)

root 的Canvas.Top属性设置为100(不是parent2)(因此也会移动root的所有子节点)。你应该做的是:

root.SetTop(parent, 0)

将父级的Canvas.Top属性设置为0。

有关MSDN的更多信息。