【发布时间】:2011-06-05 13:48:53
【问题描述】:
我想要在触控应用程序的控件中显示图像。除了图像之外,还有一个文本框显示在其下方,作为一个选项卡,停靠在图像的左下方。选项卡的宽度小于图像。用户可以调整、移动和旋转图像,但我希望文本框选项卡保持与图像相同的大小和相同的相对位置。
我尝试过同时使用 StackPanel 和 Grid,但文本框/选项卡和图像都被放大了。
是 Grid 还是 StackPanel 是要走的路,如果是这样,当第一个子项的大小发生变化时,我如何强制文本框/选项卡(即第二个子项)的大小?
谢谢!
回应拉斯:
<Grid Name="mygrid" Background="Red" Width="320" Height="300">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="255"/>
<RowDefinition MaxHeight="40" />
</Grid.RowDefinitions>
<!--Ist child-->
<Canvas Name="maincanvas" Background="DarkKhaki" Width="300" Height="180" Grid.Row="0">
<!--<Image goes in here>-->
</Canvas>
<!--2nd child-->
<DockPanel Name="dockpanel" Grid.Row="1" Background="DarkKhaki" MaxWidth="200" HorizontalAlignment="Left">
<TextBlock Name="textblock" TextWrapping="Wrap" >
some text here
</TextBlock>
</DockPanel>
</Grid>
我想要做的是允许用户拖动图像(第一个孩子)并调整其大小,同时保持 TextBlock(第二个孩子)的大小和相对位置。所以效果是一个固定在图像左下角的选项卡,它是固定的,因为图像可以动态调整大小。
我尝试添加图像以使其更清晰,但作为新用户我不能,抱歉!
【问题讨论】:
-
如果你能展示一些简单的 xaml 来证明你的观点会有所帮助
-
这还不够用,你打算如何应用转换?或者你想使用一些 Blend 行为?
-
目前我正在使用根据触摸事件生成的矩阵变换:
matrix.ScaleAt(e.DeltaManipulation.Scale.X, e.DeltaManipulation.Scale.Y, centre.X, centre.Y); i.RenderTransform = new MatrixTransform(matrix); -
嗯,如果您的 TextBlock 部分依赖于 Image 的变换,您应该尝试将其拆分为具有 Rotate、Scale 和 Translate 变换的 TransformGroup,您可以这样做吗?
-
是的-好吧,有点!我一直在搞砸这件事,但收效甚微。我想我希望有某种方法可以在 Grid/StackPanel/Whatever XAML 中指定诸如“保持这个固定大小/宽度”之类的东西,让生活变得轻松:-)