gpt4 book ai didi

c# - WPF绝对定位

转载 作者:太空狗 更新时间:2023-10-29 21:47:07 35 4
gpt4 key购买 nike

<分区>

Possible Duplicate:
How to bind a canvas to a list of rectangles

WPF 中的 Canvas 使用绝对位置正确吗?我有一种情况,我在 Canvas 上有矩形,它们的行为就像它们被放置在垂直堆栈面板上一样。

即我在 0,0 处放置了一个矩形,在 0,0 处放置了下一个矩形,但它出现在第一个矩形的下方。

例如,我知道这会按预期工作,即矩形将按预期重叠,

<Canvas>
<Rectangle Canvas.Top="50" Canvas.Left="50" Width="50" Height="50" Fill="AliceBlue" />
<Rectangle Canvas.Top="60" Canvas.Left="60" Width="50" Height="50" Fill="Pink" />
</Canvas>

但我的情况比这要复杂一些,

<Canvas Name="DrawingCanvas" Grid.Column="0" Grid.Row="0" Background="{TemplateBinding Background}" Margin="0,30,0,0">
<ItemsControl Name="LineContainer" ItemsSource="{Binding Shapes}">
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type Models1:Rectangle}">
<Rectangle Width="30" Height="30" Fill="Aquamarine" Canvas.Left="{Binding X}" Canvas.Top="{Binding Y}" >
<Rectangle.LayoutTransform>
<RotateTransform Angle="{Binding Angle}"></RotateTransform>
</Rectangle.LayoutTransform>
</Rectangle>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
</Canvas>

我的代码中有一个项目控件,它绑定(bind)到一个形状列表。这些形状像这样绑定(bind)到对象上,

public class Rectangle : IShape, INotifyPropertyChanged
{
private double angle;

public string Text { get; set; }
public double X { get; set; }
public double Y { get; set; }
public double Angle {
get
{
return angle;
}
set
{
if (angle != value)
{
angle = value;
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs("Angle"));
}
}
}
}
public Point Position { get; set; }

public event PropertyChangedEventHandler PropertyChanged;
}

但是所有的形状的坐标都是0,0,但是它们还是一个接一个的垂直排列。

有什么想法吗?

我想我现在明白了。项目控制本身使其表现得像一个堆栈面板。还有其他选择吗?

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