我在显示包含画布上多个线段的路径时遇到问题。
现在,用户可以使用直接路径连接画布上的两个控件。这是通过创建一个viewmodel类的实例来完成的,该实例传递给templateselector,后者返回路径的datatemplate。
此模板类似于
<Path StrokeThickness="2"
Stroke="Black"
Fill="Black"
MinWidth="1"
MinHeight="1"
Name="arrowPath">
<Path.Data>
<PathGeometry>
<PathGeometry.Figures>
<PathFigureCollection>
<PathFigure IsClosed="False"
StartPoint="{Binding Path=Source, ElementName=_this}">
<PathFigure.Segments>
<PathSegmentCollection>
<LineSegment IsStroked="True"
Point="{Binding Path=Destination, ElementName=_this}" />
</PathSegmentCollection>
</PathFigure.Segments>
</PathFigure>
<PathFigure IsClosed="True"
IsFilled="True"
StartPoint="{Binding Path=Destination, ElementName=_this}">
<PathFigure.Segments>
<PathSegmentCollection>
<LineSegment IsSmoothJoin="True"
IsStroked="True"
Point="{Binding Path=TrianglePoint2, ElementName=_this}" />
<LineSegment IsSmoothJoin="True"
IsStroked="True"
Point="{Binding Path=TrianglePoint3, ElementName=_this}" />
</PathSegmentCollection>
</PathFigure.Segments>
</PathFigure>
</PathFigureCollection>
</PathGeometry.Figures>
</PathGeometry>
</Path.Data>
</Path>
Path的Start-和EndPoint属性绑定到viewmodel实例的属性。
到目前为止,每个人都工作正常。但是对于更多的控件,画布实际上是一团糟,我想让用户有机会通过由多个线段组成的路径连接控件。新的viewmodel类在List中单击时存储鼠标位置。
设计新的控件我无法弄清楚如何在我的xaml中为列表中的每个Point动态添加LineSegment。
我希望你明白我的意思,谢谢你。
答案 0 :(得分:0)
考虑查看this CodeProject article,它包含有关创建图表设计器的分步教程,包括orthogonal connector routing以及如何在UI中对它们进行建模。