Silverlight用户控制位置

时间:2012-05-10 08:41:09

标签: silverlight user-controls web-parts translation

我在用于执行查询的Web部件中有一个User控件。用户控件的高度可以增长到某个点,具体取决于有多少结果。 这可能导致用户控件的标题被推到可查看区域之外。

我想得到用户控件的位置,当Y坐标为负时移动用户控件,使得Y坐标为正值。

我正在使用此帖子中的代码来获取用户控件的位置: Determine a UIElement's position

但是现在我有了这个位置,我无法弄清楚如何移动用户控件。 我尝试使用userControl.SetValue(Canvas.TopProperty, 15.0) 但它没有效果。

还有其他办法吗?

感谢您的帮助!

编辑:添加了XAML提取物

<UserControl x:Class="Gazetteer.Search" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:sys="clr-namespace:System;assembly=mscorlib"
xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"
mc:Ignorable="d"
d:DesignHeight="336" d:DesignWidth="342" BorderBrush="{x:Null}">

<Grid x:Name="LayoutRoot" Background="#FFE2E2E2" MinHeight="80" MinWidth="280">

    <StackPanel Margin="10">
        <StackPanel Margin="10" Orientation="Horizontal">
            <RadioButton x:Name="townlandRB" Margin="5" Checked="radioBtnCheck"
            GroupName="Search Type" Content="Townland" />
            <RadioButton x:Name="sitecodeRB" Margin="5" Checked="radioBtnCheck"
            GroupName="Search Type" Content="Site Code" />
        </StackPanel>            
    </StackPanel>

</Grid>

1 个答案:

答案 0 :(得分:1)

定位取决于用户控件所在的容器类型。除非父实际上是Canvas,否则Canvas.TopProperty什么都不做。

使用TranslateTransform代替移动对象。