<UserControl x:Class="WpfDisplay.Views.NodeMap"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:WpfDisplay.Views"
xmlns:vm="clr-namespace:WpfDisplay.ViewModels"
xmlns:xc="http://schemas.xceed.com/wpf/xaml/toolkit"
mc:Ignorable="d"
x:Name="nodeMap"
d:DesignHeight="450" d:DesignWidth="800"
d:DataContext="{d:DesignInstance Type=vm:IFSViewModel}">
<UserControl.Resources>
<SolidColorBrush x:Key="bgBrush" Color="Gray"/>
<!--<VisualBrush x:Key="bgBrush" TileMode="Tile"
Viewport="0,0,25,25" ViewportUnits="Absolute" Viewbox="0,0,25,25" ViewboxUnits="Absolute">
<VisualBrush.Visual>
<Grid Background="Gray">
<Path Data="M 25 25 L 25 0" Stroke="DarkSlateGray" />
<Path Data="M 0 25 L 25 25" Stroke="DarkSlateGray" />
</Grid>
</VisualBrush.Visual>
</VisualBrush>-->
</UserControl.Resources>
<Grid>
<xc:Zoombox
x:Name="ZoomBorder"
IsAnimated="True"
AnimationDuration="0:0:0.05"
KeepContentInBounds="True"
DragModifiers="None"
RelativeZoomModifiers="None"
Cursor="Arrow"
ZoomOnPreview="False"
Position="0,0"
Scale="1"
>
<Grid x:Name="wrapperGrid" ClipToBounds="False" Background="{StaticResource bgBrush}">
<!--Temporary arrow which indicates a new connection being dragged-->
<Canvas>
<local:ConnectionArrow x:Name="dragArrow"
StartPoint="{Binding ConnectingIterator.Position}"
Visibility="{Binding ConnectingIterator, Converter={StaticResource nullVisibilityConverter}}"/>
</Canvas>
<!--Map Nodes and Arrows to Iterators and weights-->
<ItemsControl ItemsSource="{Binding NodeMapElements}" x:Name="itemsControl">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas x:Name="itemsPanel"
Width="{Binding ActualWidth, ElementName=ZoomBorder, Mode=OneWay}"
Height="{Binding ActualHeight, ElementName=ZoomBorder, Mode=OneWay}"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemContainerStyle>
<Style>
<Setter Property="Canvas.ZIndex" Value="{Binding ForegroundZIndex}"/>
</Style>
</ItemsControl.ItemContainerStyle>
<ItemsControl.Resources>
<DataTemplate DataType="{x:Type vm:IteratorViewModel}">
<local:Node
Position="{Binding Position, Mode=TwoWay}"
ParentCanvas="{Binding ElementName=itemsPanel}"
DataContext="{Binding}"
SelectCommand="{Binding DataContext.SelectIteratorCommand, ElementName=nodeMap}">
</local:Node>
</DataTemplate>
<DataTemplate DataType="{x:Type vm:ConnectionViewModel}">
<local:ConnectionArrow
StartPoint="{Binding StartPoint}"
EndPoint="{Binding EndPoint}"
ParentNodeMap="{Binding ElementName=nodeMap}"
DataContext="{Binding}"
SelectCommand="{Binding DataContext.SelectConnectionCommand, ElementName=nodeMap}"/>
</DataTemplate>
</ItemsControl.Resources>
</ItemsControl>
</Grid>
</xc:Zoombox>
<!--<Button Command="{Binding AutoLayoutNodesCommand}"
Style="{DynamicResource MaterialDesignFloatingActionButton}" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10,10,10,10">
Layout
</Button>-->
</Grid>
</UserControl>