我正在我的应用程序中实现行为,它将根据屏幕大小调整主要内容区域的大小。 (内容区域由图标和用户可以放置/绘制的其他元素组成)
目前,margin属性用于使用将Point
转换为Thickness
的转换器来定位元素。
示例:
“缩放”是我的目标,其中子元素按位置“缩放”到容器的大小。
如何将变换(RenderTransform
或LayoutTransform
)应用于网格的所有子元素,以便图标位置将缩放到正确的位置,具体取决于网格尺寸?
还应该注意,在应用程序运行时可以删除/添加这些图标。元素的位置是所有需要缩放的,不的大小。
答案 0 :(得分:2)
我之前已经这样做了,我建议你这样做:
Circle
)中,您有某种坐标表示其位置,按比例表示容器的大小。因此,0.5
代表中间,0.33
代表左边三分之一等。IMultiValueConverter
,根据给定维度的相对坐标和容器大小计算像素坐标; 的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
,为数据类型ItemsTemplate
创建Circle
,并将容器ItemsSource
绑定到例如,在某些视图模型上有一些ObservableCollection。