Silverlight 用户控制位置

Posted

技术标签:

【中文标题】Silverlight 用户控制位置【英文标题】:Silverlight User Control Position 【发布时间】:2012-05-18 19:27:44 【问题描述】:

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

我想获取用户控件的位置,当 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>

【问题讨论】:

你能展示你的 XAML 吗?定位取决于您的用户控件所在的容器类型。否则你可以使用 TranslateTranform 来移动它。 感谢 HiTech MAgic,我使用了 TranslateTransform,它现在可以正常工作了! 有用,但我的意思是包含您的用户控件的页面的 Xaml :) 嗯,你知道这是问题的一部分。从此用户控件编译的 XAP 上传到 SharePoint 站点,因此我无法直接访问存储它的页面。但是感谢您的评论,我所做的是获取用户控件的父级并在后面的代码中将 TranslateTransform 添加到父级的 RenderTransform 中。然后我只需设置移动整个用户控件的 TranslateTransform 的 Y 坐标。 +1 用于提供 XAML。总是有帮助:) 【参考方案1】:

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

使用 TranslateTransform 来移动对象。

【讨论】:

以上是关于Silverlight 用户控制位置的主要内容,如果未能解决你的问题,请参考以下文章

从控制器中的导航器获取用户位置

2018-02-23WebLogic管理控制台用户存放位置

在 Silverlight 中保存到可移动驱动器

Silverlight 利用DataGrid行加载事件动态控制行列显示

第 3 方 Silverlight 网格控制

我可以控制 .NET 用户设置的位置以避免在应用程序升级时丢失设置吗?