缩放子元素的位置,但不缩放其大小?

推拉式

我在我的应用程序中实现了行为,该行为将根据屏幕大小来调整主要内容区域的大小。(内容区域由用户可以放置/绘制的图标和其他元素组成)

目前,margin属性是使用转换的转换器用于定位元件PointThickness

例子:

http://i.imgur.com/tom7ZKE.png

我需要将子元素位置“缩放”到容器的大小。元素位置仅是需要缩放的大小而不是大小。

如何将变换(RenderTransformLayoutTransform)应用于网格的所有元素,以便图标位置将根据网格大小缩放到正确的位置?

还应注意,在应用程序运行时,可以删除/添加这些图标。

赫尔顿·比克

我之前已经做过此事,建议您这样做:

  1. 在元素类(例如Circle)中,您有某种坐标表示容器的位置,容器的大小成比例因此,0.5代表中间,0.33代表左边的三分之一,依此类推。
  2. 创建一个IMultiValueConverter可根据相对坐标和容器尺寸沿给定尺寸计算像素坐标的;
  3. 通过以下方式在XAML中声明对象的边距(对于Grid容器)或Canvas.Top/Left(对于Canvas容器):

Xaml:

<Circle>
    <Circle.Margin>
        <MultiBinding Converter="{StaticResource ThatConverter}">
            <Binding ElementName="container" Path="ActualWidth"/>
            <Binding Path="CircleCoordinateX"/>
            <!-- The same for height and Y coordinate -->
        </MultiBinding>
    </Circle.Margin>
</Circle>

代替这种更简单的方法,理想情况下,您应该使容器成为ItemsControl,创建ItemsTemplatefor数据类型Circle,然后将容器绑定ItemsSource到某些视图模型上的某些ObservableCollection。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章