WPF Canvas Scaling / Transform to Fit
我正在重新提出这个问题,因为我上次没有得到很多答复,希望一些重新措辞可能会有所帮助……
基本上我正在尝试做的是创建一个数据绑定canvas,它将自动缩放其内容以“填充”可用空间。 有点像缩放以适应操作。 不幸的是,我的WPF技能还不是很强,我正在努力研究如何做到这一点。 我已经按照一些数据绑定示例来获取canvas,但不确定是否可能是错误并阻碍了我。
根据我尝试和解决方案的方式,我现在有两个基本问题:
- 如果可能使用转换,我不知道如何通过XAML自动重新缩放canvas。
- 我似乎无法在后面的代码中引用canvas,我猜是因为它是ItemsControl的一部分?
我想要实现的一个例子,我有AI想要尝试获得B:
( 删除过期链接到img )
我目前使用的代码非常简单,只需使用给定的坐标创建4个点,然后使用另一个视图模型将其包装起来。
public class PointCollectionViewModel { private List viewModels; public PointCollectionViewModel() { this.viewModels = new List(); this.viewModels.Add(new PointViewModel(new Point(1, 1))); this.viewModels.Add(new PointViewModel(new Point(9, 9))); this.viewModels.Add(new PointViewModel(new Point(1, 9))); this.viewModels.Add(new PointViewModel(new Point(9, 1))); } public List Models { get { return this.viewModels; } } } public class PointViewModel { private Point point; public PointViewModel(Point point) { this.point = point; } public Double X { get { return point.X; } } public Double Y { get { return point.Y; } } }
然后将PointCollectionViewModel用作我的AutoResizingCanvas的DataContent,它具有以下XAML来实现绑定:
由于您的Canvas
似乎没有固定的宽度和高度,我会将其包含在Viewbox
:
或者,将整个UserControl
放入ViewBox
。