动态更改子用户控件的位置

时间:2012-11-07 11:00:49

标签: .net wpf

我创建了一个用户控件,其中包含另一个用户控件作为子控件。我试过移动子用户控件bu发出以下语句

this.versionDisplay.SetValue(Canvas.TopProperty,10.0);

但是VS2010显示如下错误

  

错误23'MainApp.MainGui.MainControls.MainTitleControl'没有   包含'versionDisplay'的定义,没有扩展方法   'versionDisplay'接受第一个类型的参数   可以找到'MainApp.MainGui.MainControls.MainTitleControl'(是   你错过了使用指令或程序集引用?)

我确信子控件的名称是versionDisplay。

MainTitleControl代码

<UserControl x:Class="Main.MainGui.MainControls.MainTitleControl"
     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:wcontrols="clr-namespace:WEPA.MainGui.MainControls"
     Height="80" Width="395" Loaded="UserControl_Loaded" >

     <Grid Background="Transparent"  >
         <Image  HorizontalAlignment="Left"  Name="image1" Stretch="Fill" VerticalAlignment="Top"  Width="635" Height="120" Source="/MainApplication;component/images/UnCategorized/Wireless.png" Margin="12,0,0,0" / >
         <wcontrols:supportInfoControl Name="versionDisplay" Height="20" Canvas.Left="185" Canvas.Top="70" Margin="200,95,-114,-35" />
    </Grid>
</UserControl>

请建议。

1 个答案:

答案 0 :(得分:1)

您的嵌套UserControl(wcontrols:supportInfoControl)似乎包含在Grid中,因此即使您正确设置了Canvas.Top属性:

Canvas.SetTop(this.versionDisplay, 10.0);

然后它仍然没有效果。我会试试这个:

this.versionDisplay.RenderTransform = new TranslateTransform(0.0, 10.0);

您没有指定此重定位对兄弟元素和父元素的影响,因此我建议使用RenderTransform。如果您想要不同的整体行为,则需要更加具体。

我希望这会有所帮助。