gpt4 book ai didi

c# - 缩放子元素的位置,但不缩放它们的大小?

转载 作者:行者123 更新时间:2023-12-02 08:30:12 24 4
gpt4 key购买 nike

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

目前,margin 属性用于通过将 Point 转换为 Thickness 的转换器来定位元素。

示例:

/image/6kg4o.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,为数据类型 Circle 创建一个 ItemsTemplate,而不是采用这种更简单的方法,然后例如,将容器 ItemsSource 绑定(bind)到某个 View 模型上的某个 ObservableCollection。

关于c# - 缩放子元素的位置,但不缩放它们的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29868830/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com