0

我想绘制连接由 ItemsControl 绘制的块的线。这些是我的课:

public class NodeBase
{
    public string Name { get; set; }
    public double X { get; set; }
    public double Y { get; set; }
    public List<Connector> Inputs { get; set; }
    public List<Connector> Outputs { get; set; }
}

public class Connector
{
    public string Name { get; set; }
    public List<Connection> Connections { get; set; }
}

public class Connection
{
    public NodeBase TargetBlock { get; set; }
}

然后我有我设置为 ItemsControls ItemsSource 的列表。

这是我的每个 NodeBase 项目的 DataTemplate:

<DataTemplate DataType="{x:Type local:NodeBase}">
    <Border BorderBrush="Black" BorderThickness="1">
        <StackPanel>
            <DockPanel>
                <TextBlock Text="{Binding Name}" TextAlignment="Center" Foreground="White" Margin="30, 0, 30, 0" DockPanel.Dock="Top"/>
                <Grid Background="Gray">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="50*"/>
                        <ColumnDefinition Width="50*"/>
                    </Grid.ColumnDefinitions>
                    <local:InputItemsControl ItemsSource="{Binding Inputs}" Grid.Column="0"/>
                    <local:OutputItemsControl ItemsSource="{Binding Outputs}" Grid.Column="1" Margin="5, 0, 0, 0"/>
                </Grid>
            </DockPanel>
        </StackPanel>
    </Border>
</DataTemplate>

OutputItemsControl 和 InputItemsControl 是 ItemsControls。OutputItemsControl 中连接器的 DataTemplate 如下所示:

<DataTemplate DataType="{x:Type local:Connector}">
    <StackPanel Orientation="Horizontal" HorizontalAlignment="Right">
        <TextBlock Text="{Binding Name}" HorizontalAlignment="Right"/>
        <Rectangle Fill="Black" Width="5" Height="5" HorizontalAlignment="Right" Margin="5, 0, 0, 0" Name="_ConnectorRectangle"/>
    </StackPanel>
</DataTemplate>

我的积木绘制正确。现在我想在名为“_ConnectorRectangle”的矩形之间画一条线来连接可视节点表示。有什么想法可以实现吗?

4

0 回答 0