使用WPF的视图框中的多条多段线
本文关键字:段线 WPF 视图 使用 | 更新日期: 2023-09-27 18:21:26
我想在WPF中的Viewbox
中"绘制"几个Polyline
和一些Textblock
或Label
。
由于Viewbox
只允许一个Child,我试图将Polyline
放在Canvas
元素中,但没有成功:
XAML:
<Viewbox Stretch="Uniform">
<Canvas Margin="10">
<Polyline
Points="{Binding Path=Points2}"
Stroke="Green"
StrokeThickness="2" >
</Polyline>
<!-- other Polylines, Textblocks etc. would go here... -->
</Canvas>
</Viewbox>
当我使用此代码时,Polyline
被正确绘制(即,我只是丢弃了Canvas
):
<Viewbox Stretch="Uniform">
<Polyline
Points="{Binding Path=Points2}"
Stroke="Green"
StrokeThickness="2" >
</Polyline>
</Viewbox>
我想把一些几何属性可视化,比如在一个非常简约的计算机几何程序中,比如geogebra。在下一个版本中,一些点应该是可移动的,但这不是必需的。
解决方案:
<Viewbox Stretch="Uniform">
<Grid>
<Polyline
Points="{Binding Path=Points2}"
Stroke="Green"
StrokeThickness="4" >
</Polyline>
<Polyline
Points="{Binding Path=Points2}"
Stroke="Yellow"
StrokeThickness="2" >
</Polyline>
</Grid>
</Viewbox>
这会将相同的多边形放在彼此的顶部,即宽绿色多段线顶部的薄黄色。
这个stackoverflow问题的答案帮助了我。
画布并不能真正适用于这样的事情,一旦您将控件放入画布中,就会忽略所有布局。你能把多边形线放在一个网格里,然后用边距来定位它们吗?
<Viewbox Stretch="Uniform">
<Grid Margin="10">
<Polyline
Points="{Binding Path=Points2}"
Stroke="Green"
StrokeThickness="2" >
</Polyline>
</Grid>
</Viewbox>
您看不到多段线的原因是Canvas
的默认Height
和Width
为0。
尝试显式设置Height
和Width
。
<Viewbox x:Name="ViewBox" Stretch="Uniform">
<Canvas x:Name="chartCanvas" Margin="10" Height="200" Width="300">
<Polyline
Points="{Binding Path=Points2}"
Stroke="Green"
StrokeThickness="2">
</Polyline>
<!-- other Polylines, Textblocks etc. would go here... -->
</Canvas>
</Viewbox>