我想绘制连接由 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”的矩形之间画一条线来连接可视节点表示。有什么想法可以实现吗?