1

我想在 WPF中“绘制”几个Polylines 和一些Textblocks 或Labels 。Viewbox

由于 aViewbox只允许一个孩子,我试图将Polylines 放在一个Canvas不起作用的 Element 中:

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问题的答案帮助了我。

4

2 回答 2

1

画布实际上不适用于这样的事情,一旦您将控件放在画布内,您就会忽略所有布局。您可以将折线放在网格内并使用边距来定位它们吗?

<Viewbox Stretch="Uniform">
    <Grid  Margin="10">
        <Polyline 
                    Points="{Binding Path=Points2}"
                    Stroke="Green"
                    StrokeThickness="2" >
        </Polyline>
    </Grid>
</Viewbox>
于 2013-07-08T15:24:23.243 回答
0

您看不到折线的原因是因为Canvas具有默认值HeightWidth0。

尝试明确设置Heightand 。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>
于 2013-07-08T15:55:33.037 回答