Silverlight Tips(4)

      又到开学季节,或许过了这次,人生再也没有开学的机会了,临近毕业的时候,才发现四年就快过去了,才发现有多想留住时间,先不感慨了,这篇继续记录几个小的Tips。

ItemsControl中添加ScrollViewer

      修改ControlTemplate,将ScrollViewer添加至ItemsPresent中即可

         <ItemsControl x:Name="itemControl" >
            <ItemsControl.Template>
                <ControlTemplate>
                    <ScrollViewer x:Name="scollViewer" Padding="{TemplateBinding Padding}" />
                </ControlTemplate>
            </ItemsControl.Template>
        </ItemsControl>

 获取元素的相对坐标

     最普遍的场景是获取子控件中相对父控件的的坐标

         <StackPanel Margin="130,60,0,0" Name="parentElement" >
            <TextBox  Name="childElement"  />
         </StackPanel>

C#Code:

Point point = childElement.TransformToVisual(parentElement).Transform(new Point(0,0));

     当子元素在父元素的左边或者上面,坐标值会是负数。

     如果要获得绝对位置,那么计算元素相对根元素的位置

Point point1 = uiElement.TransformToVisual(App.Current.RootVisual).Transform(new Point(0,0));

 

获取区域内的元素

      在某个场景中,我们需要获取某一个区域(点)内的对象,这可以使用Silverlight中的VisualTreeHelper.FindElementsInHostCoordinates来实现,

它可以获取一个Rect或者Point内的对象:

         Rect rect = new Rect(100, 100, 100, 100);
        IEnumerable<UIElement> elementsInAreas = VisualTreeHelper.FindElementsInHostCoordinates(rect,uiElement);

 

 

posted @ 2011-02-20 15:47  ringgo  阅读(667)  评论(0编辑  收藏  举报