动态地将线段添加到xaml

时间:2014-06-04 11:41:26

标签: c# wpf xaml

我在显示包含画布上多个线段的路径时遇到问题。

现在,用户可以使用直接路径连接画布上的两个控件。这是通过创建一个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。

我希望你明白我的意思,谢谢你。

1 个答案:

答案 0 :(得分:0)

考虑查看this CodeProject article,它包含有关创建图表设计器的分步教程,包括orthogonal connector routing以及如何在UI中对它们进行建模。