WPF - 如何以编程方式在自定义控件之间绘制线条

时间:2017-04-19 19:50:43

标签: c# .net wpf visual-studio-2017

所以我试图创建一个允许用户使用WPF中具有不同功能的模块设计简单程序的程序。

我为我的模块创建了如下所示的自定义控件:

    <Border Height="75" Width="150" BorderThickness="1" BorderBrush="Black">
    <Grid Background="Gray" Height="75" Width ="150">
        <Grid.RowDefinitions>
            <RowDefinition Height="1*"/>
            <RowDefinition Height="2*"/>
        </Grid.RowDefinitions>
        <Label Content="Double" FontSize="12" Grid.Row="0" HorizontalContentAlignment="Center" Background="Aquamarine"/>
        <Grid Grid.Row="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition Width="3*"/>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Button Name="IncomingConnection" Height="15" Width="15" Background="Black" Margin="5" VerticalAlignment="Top" HorizontalAlignment="Left"/>

            <Button Name="OutgoingConnection" Grid.Column="2" Height="15" Width="15" VerticalAlignment="Top" Background="Black" Margin="5" HorizontalAlignment="Right"/>
            <Button Name="OutgoingData" Grid.Column="2" Height="15" Width="15" VerticalAlignment="Bottom" Background="Aquamarine" Margin="5" HorizontalAlignment="Right"/>
        </Grid>
    </Grid>
</Border>

无论如何,我希望能够点击其中一个按钮(incomingConnection或outgoingConnection),然后用一条线连接两个按钮。

其他信息:自定义控件全部放置在拇指内,以便可以拖动它们。一切都在画布上。我不想在控件之间创建一条线,而是在控件上的按钮之间创建一条线。

非常感谢!

1 个答案:

答案 0 :(得分:2)

对于包含两个端点的x和y坐标的线,我会有一个类。我会将每一行的实例放入视图模型的列表中。然后使用绑定到该属性的boost::multiprecision::mpf_float_1000并使用ItemsControl作为模板。然后,您可以使用WPF Canvas控件作为Line的{​​{1}}。您可以将ItemTemplate控件的ItemsControlLineX1Y1绑定到在开头创建的行类的端点属性。 / p>

使用该设置,您只需将行类的实例添加到列表中,它们就会自动显示在X2上。