aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-12-28 00:44:38 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-12-28 00:44:38 +0200
commit0fdbc932838bb6e007cfa8a0079d1880c800ed81 (patch)
treece95fc1a7fe455c66aced9fad1650be8bb6067a1 /Software/Visual_Studio
parent518c9192e4445d82f192edcccb2ffb64ffc88a65 (diff)
downloadTango-0fdbc932838bb6e007cfa8a0079d1880c800ed81.tar.gz
Tango-0fdbc932838bb6e007cfa8a0079d1880c800ed81.zip
Removed length from job viewer.
Improved FastTextBlock. Improved PPC segments loading ability from ~40 to ~150.
Diffstat (limited to 'Software/Visual_Studio')
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Controls/JobSummeryViewer.xaml31
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Controls/JobSummeryViewer.xaml.cs12
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs8
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobSummeryView.xaml2
-rw-r--r--Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobView.xaml472
-rw-r--r--Software/Visual_Studio/Tango.SharedUI/Components/LazyBinding.cs160
-rw-r--r--Software/Visual_Studio/Tango.SharedUI/Controls/FastTextBlock.cs18
-rw-r--r--Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj3
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/LightTouchScrollViewer.xaml4
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchComboBox.xaml4
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchNumericTextBox.cs4
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchNumericTextBox.xaml3
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchVirtualizedContentReplaceControl.cs188
-rw-r--r--Software/Visual_Studio/Tango.Touch/Controls/TouchVirtualizedContentReplaceControl.xaml15
-rw-r--r--Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj7
-rw-r--r--Software/Visual_Studio/Tango.Touch/Themes/Generic.xaml1
16 files changed, 670 insertions, 262 deletions
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Controls/JobSummeryViewer.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Controls/JobSummeryViewer.xaml
index afe331145..bd0bbfd11 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Controls/JobSummeryViewer.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Controls/JobSummeryViewer.xaml
@@ -3,11 +3,12 @@
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:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI"
xmlns:enumerations="clr-namespace:Tango.BL.Enumerations;assembly=Tango.BL"
xmlns:entities="clr-namespace:Tango.BL.Entities;assembly=Tango.BL"
xmlns:local="clr-namespace:Tango.PPC.Jobs.Controls"
mc:Ignorable="d"
- d:DesignHeight="60" d:DesignWidth="500" Height="38" d:DataContext="{d:DesignInstance Type=entities:Job, IsDesignTimeCreatable=False}" x:Name="control">
+ d:DesignHeight="60" d:DesignWidth="500" Height="38" x:Name="control">
<Grid>
<Grid.ColumnDefinitions>
@@ -20,7 +21,7 @@
<RowDefinition Height="1*" />
</Grid.RowDefinitions>
- <ItemsControl ClipToBounds="False" ItemsSource="{Binding EffectiveSegments,IsAsync=True}" Visibility="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DisplayMarkers,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <ItemsControl ClipToBounds="False" ItemsSource="{Binding ElementName=control,Path=Job.EffectiveSegments}" Visibility="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DisplayMarkers,Converter={StaticResource BooleanToVisibilityConverter}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" ClipToBounds="False"></StackPanel>
@@ -31,15 +32,15 @@
<Grid x:Name="grid">
<Grid.Width>
<MultiBinding Converter="{StaticResource SegmentLengthToWidthConverter}">
- <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.Length"></Binding>
+ <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="Job.Length"></Binding>
<Binding RelativeSource="{RelativeSource AncestorType=ItemsControl}" Path="ActualWidth"></Binding>
<Binding Path="LengthWithFactor"></Binding>
</MultiBinding>
</Grid.Width>
- <TextBlock HorizontalAlignment="Center" FontSize="{StaticResource TangoSmallFontSize}">
- <TextBlock.Style>
- <Style TargetType="TextBlock">
+ <DockPanel HorizontalAlignment="Center" TextElement.FontSize="{StaticResource TangoSmallFontSize}">
+ <DockPanel.Style>
+ <Style TargetType="DockPanel">
<Setter Property="Visibility" Value="Visible"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=grid,Path=ActualWidth,Converter={StaticResource SmallerThanToBooleanConverter},ConverterParameter=20}" Value="True">
@@ -47,9 +48,10 @@
</DataTrigger>
</Style.Triggers>
</Style>
- </TextBlock.Style>
- <Run Text="{Binding LengthWithFactor,Mode=OneWay,StringFormat=N0,IsAsync=True}"></Run><Run Text="m"></Run>
- </TextBlock>
+ </DockPanel.Style>
+ <controls:FastTextBlock Text="{Binding LengthWithFactor,Mode=OneWay,StringFormat=N0}" />
+ <controls:FastTextBlock Text="m" />
+ </DockPanel>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
@@ -66,11 +68,8 @@
</RectangleGeometry.Rect>
</RectangleGeometry>
</Border.Clip>
- <Border.Background>
- <ImageBrush ImageSource="../Images/JobView/transparent_small.jpg" Stretch="None" TileMode="Tile" AlignmentX="Left" ViewportUnits="Absolute" Viewport="0,0,94,30" />
- </Border.Background>
<Grid>
- <ItemsControl ClipToBounds="False" ItemsSource="{Binding EffectiveSegments,IsAsync=True}">
+ <ItemsControl ClipToBounds="False" ItemsSource="{Binding ElementName=control,Path=Job.EffectiveSegments}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" ClipToBounds="False"></StackPanel>
@@ -81,7 +80,7 @@
<Grid>
<Grid.Width>
<MultiBinding Converter="{StaticResource SegmentLengthToWidthConverter}">
- <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.Length"></Binding>
+ <Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="Job.Length"></Binding>
<Binding RelativeSource="{RelativeSource AncestorType=ItemsControl}" Path="ActualWidth"></Binding>
<Binding Path="LengthWithFactor"></Binding>
</MultiBinding>
@@ -104,7 +103,7 @@
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
- <Condition Binding="{Binding JobType}" Value="{x:Static enumerations:JobTypes.Embroidery}" />
+ <Condition Binding="{Binding ElementName=control,Path=Job.JobType}" Value="{x:Static enumerations:JobTypes.Embroidery}" />
<Condition Binding="{Binding ElementName=control,Path=IsActive}" Value="False" />
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Visible"></Setter>
@@ -114,7 +113,7 @@
</Grid.Style>
<TextBlock Margin="10 0 0 -2" VerticalAlignment="Center" FontSize="{StaticResource TangoTitleFontSize}">
- <Run Text="x"></Run><Run Text="{Binding NumberOfUnits}"></Run>
+ <Run Text="x"></Run><Run Text="{Binding ElementName=control,Path=Job.NumberOfUnits}"></Run>
</TextBlock>
</Grid>
</Grid>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Controls/JobSummeryViewer.xaml.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Controls/JobSummeryViewer.xaml.cs
index 1c0b90f91..c977e71d0 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Controls/JobSummeryViewer.xaml.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Controls/JobSummeryViewer.xaml.cs
@@ -23,6 +23,18 @@ namespace Tango.PPC.Jobs.Controls
/// <seealso cref="System.Windows.Markup.IComponentConnector" />
public partial class JobSummeryViewer : UserControl
{
+
+ /// <summary>
+ /// Gets or sets the job.
+ /// </summary>
+ public Job Job
+ {
+ get { return (Job)GetValue(JobProperty); }
+ set { SetValue(JobProperty, value); }
+ }
+ public static readonly DependencyProperty JobProperty =
+ DependencyProperty.Register("Job", typeof(Job), typeof(JobSummeryViewer), new PropertyMetadata(null));
+
/// <summary>
/// Maybe not necessary!
/// </summary>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs
index e8af7c957..cfac759dd 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/ViewModels/JobViewVM.cs
@@ -422,6 +422,14 @@ namespace Tango.PPC.Jobs.ViewModels
if (_db != null)
{
+ if (Job != null)
+ {
+ foreach (var stop in Job.Segments.SelectMany(x => x.BrushStops).ToList())
+ {
+ stop.ColorSpaceChanged -= Stop_ColorSpaceChanged;
+ }
+ }
+
Rmls.ForEach(x => x.Cct = null);
Rmls = null;
_db.Dispose();
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobSummeryView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobSummeryView.xaml
index 4785805a6..ddda98df9 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobSummeryView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobSummeryView.xaml
@@ -92,7 +92,7 @@
</UniformGrid>
</Grid>
- <controls:JobSummeryViewer Height="40" DataContext="{Binding Job}" VerticalAlignment="Center" Margin="20 0" Grid.Row="2" />
+ <controls:JobSummeryViewer Height="40" Job="{Binding Job}" VerticalAlignment="Center" Margin="20 0" Grid.Row="2" />
</Grid>
</DockPanel>
</Border>
diff --git a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobView.xaml b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobView.xaml
index 467c3f72b..c1472793a 100644
--- a/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobView.xaml
+++ b/Software/Visual_Studio/PPC/Modules/Tango.PPC.Jobs/Views/JobView.xaml
@@ -51,7 +51,7 @@
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border>
- <touch:TouchNumericTextBox DisplayWatermarkHint="True" Width="50" Watermark="{Binding IdsPack.LiquidType.Name,IsAsync=True}" Margin="2 0" ValueChanged="OnLiquidVolumeFieldValueChanged" HorizontalContentAlignment="Center" Value="{Binding Volume}" keyboard:KeyboardView.Container="{Binding ElementName=Container}" HasDecimalPoint="True" Minimum="0" Maximum="200" JoggingFactor="0.5" StringFormat="0.0" />
+ <touch:TouchNumericTextBox DisplayWatermarkHint="True" Width="50" Watermark="{Binding IdsPack.LiquidType.Name}" Margin="2 0" ValueChanged="OnLiquidVolumeFieldValueChanged" HorizontalContentAlignment="Center" Value="{Binding Volume}" keyboard:KeyboardView.Container="{Binding ElementName=Container}" HasDecimalPoint="True" Minimum="0" Maximum="200" JoggingFactor="0.5" StringFormat="0.0" />
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
@@ -118,11 +118,11 @@
<Style TargetType="Border">
<Setter Property="Background">
<Setter.Value>
- <SolidColorBrush Color="{Binding Color,IsAsync=True}" />
+ <SolidColorBrush Color="{Binding Color}" />
</Setter.Value>
</Setter>
<Style.Triggers>
- <DataTrigger Binding="{Binding IsTransparent,IsAsync=True}" Value="True" >
+ <DataTrigger Binding="{Binding IsTransparent}" Value="True" >
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="{StaticResource Image_TransparentSmall}" Stretch="None" />
@@ -150,19 +150,19 @@
</Setter.Value>
</Setter>
<Style.Triggers>
- <DataTrigger Binding="{Binding ColorSpace.Name,IsAsync=True}" Value="RGB">
+ <DataTrigger Binding="{Binding ColorSpace.Name}" Value="RGB">
<Setter Property="ContentTemplate" Value="{StaticResource RGB_Template}" />
</DataTrigger>
- <DataTrigger Binding="{Binding ColorSpace.Name,IsAsync=True}" Value="CMYK">
+ <DataTrigger Binding="{Binding ColorSpace.Name}" Value="CMYK">
<Setter Property="ContentTemplate" Value="{StaticResource CMYK_Template}" />
</DataTrigger>
- <DataTrigger Binding="{Binding ColorSpace.Name,IsAsync=True}" Value="LAB">
+ <DataTrigger Binding="{Binding ColorSpace.Name}" Value="LAB">
<Setter Property="ContentTemplate" Value="{StaticResource LAB_Template}" />
</DataTrigger>
- <DataTrigger Binding="{Binding ColorSpace.Name,IsAsync=True}" Value="Catalog">
+ <DataTrigger Binding="{Binding ColorSpace.Name}" Value="Catalog">
<Setter Property="ContentTemplate" Value="{StaticResource CATALOG_Template}" />
</DataTrigger>
- <DataTrigger Binding="{Binding ColorSpace.Name,IsAsync=True}" Value="Volume">
+ <DataTrigger Binding="{Binding ColorSpace.Name}" Value="Volume">
<Setter Property="ContentTemplate" Value="{StaticResource Volume_Template}" />
</DataTrigger>
</Style.Triggers>
@@ -171,12 +171,12 @@
</ContentControl>
</DockPanel>
- <Canvas Visibility="{Binding IsOutOfGamut,IsAsync=True,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <Canvas Visibility="{Binding IsOutOfGamut,Converter={StaticResource BooleanToVisibilityConverter}}">
<TextBlock Canvas.Top="2" Foreground="{StaticResource TangoErrorBrush}" FontSize="{StaticResource TangoSmallFontSize}" Text="Color is out of gamut. Modify color or select an alternative."></TextBlock>
</Canvas>
<DockPanel LastChildFill="False" Margin="0 20 0 0" IsEnabled="{Binding IsMiddle}">
- <TextBlock VerticalAlignment="Bottom" DockPanel.Dock="Left">Position (m):</TextBlock>
+ <controls:FastTextBlock VerticalAlignment="Bottom" DockPanel.Dock="Left">Position (m):</controls:FastTextBlock>
<Grid Margin="20 0 0 0" Width="300" DockPanel.Dock="Right">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1*" />
@@ -190,270 +190,271 @@
</StackPanel>
<StackPanel Orientation="Horizontal" Margin="0 0 -130 0" HorizontalAlignment="Right" VerticalAlignment="Top">
- <StackPanel Orientation="Horizontal" Visibility="{Binding ElementName=toggleEdit,Path=IsChecked,IsAsync=True,Converter={StaticResource BooleanToVisibilityInverseConverter}}">
- <!--<touch:TouchToggleIconButton Padding="15" Width="60" Height="60" CornerRadius="30" Icon="EyeOutline" CheckedIcon="EyeOffOutline" Foreground="{StaticResource TangoGrayBrush}" CheckedForeground="{StaticResource TangoGrayBrush}" IsChecked="{Binding IsTransparent,IsAsync=True}"></touch:TouchToggleIconButton>-->
- <touch:TouchImageButton Command="{Binding ElementName=view,Path=DataContext.ReplaceBrushStopCommand,IsAsync=True}" CommandParameter="{Binding}" Visibility="{Binding ColorSpace,Converter={StaticResource ColorSpaceToVisibilityConverter},IsAsync=True}" Width="50" Height="50" Padding="10" Image="{StaticResource Image_Replace_Color}" CornerRadius="30"></touch:TouchImageButton>
+ <StackPanel Orientation="Horizontal" Visibility="{Binding ElementName=toggleEdit,Path=IsChecked,Converter={StaticResource BooleanToVisibilityInverseConverter}}">
+ <!--<touch:TouchToggleIconButton Padding="15" Width="60" Height="60" CornerRadius="30" Icon="EyeOutline" CheckedIcon="EyeOffOutline" Foreground="{StaticResource TangoGrayBrush}" CheckedForeground="{StaticResource TangoGrayBrush}" IsChecked="{Binding IsTransparent}"></touch:TouchToggleIconButton>-->
+ <touch:TouchImageButton Command="{Binding ElementName=view,Path=DataContext.ReplaceBrushStopCommand}" CommandParameter="{Binding}" Visibility="{Binding ColorSpace,Converter={StaticResource ColorSpaceToVisibilityConverter}}" Width="50" Height="50" Padding="10" Image="{StaticResource Image_Replace_Color}" CornerRadius="30"></touch:TouchImageButton>
</StackPanel>
- <touch:TouchIconButton Margin="0 0 50 0" Visibility="{Binding ElementName=toggleEdit,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}" Command="{Binding ElementName=view,Path=DataContext.RemoveBrushStopCommand,IsAsync=True}" CommandParameter="{Binding}" EnableDropShadow="False" Icon="TrashAltRegular" Padding="12" Foreground="{StaticResource TangoPrimaryAccentBrush}" Width="50" Height="50" RippleBrush="{StaticResource TangoRippleDarkBrush}" CornerRadius="30" />
+ <touch:TouchIconButton Margin="0 0 50 0" Visibility="{Binding ElementName=toggleEdit,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}" Command="{Binding ElementName=view,Path=DataContext.RemoveBrushStopCommand}" CommandParameter="{Binding}" EnableDropShadow="False" Icon="TrashAltRegular" Padding="12" Foreground="{StaticResource TangoPrimaryAccentBrush}" Width="50" Height="50" RippleBrush="{StaticResource TangoRippleDarkBrush}" CornerRadius="30" />
</StackPanel>
</Grid>
</DataTemplate>
<DataTemplate x:Key="Segment_Template" DataType="{x:Type entities:Segment}">
- <touch:TouchVirtualizedContentControl Margin="0 0 0 15">
- <Border RenderOptions.EdgeMode="Unspecified" CornerRadius="8" Background="{StaticResource TangoPrimaryBackgroundBrush}" BorderThickness="1" BorderBrush="{StaticResource TangoGrayBrush}">
- <Border.CacheMode>
- <BitmapCache RenderAtScale="1" SnapsToDevicePixels="True" />
- </Border.CacheMode>
- <Grid>
- <Grid.RowDefinitions>
- <RowDefinition Height="Auto" />
- <RowDefinition Height="Auto" />
- </Grid.RowDefinitions>
- <Grid Background="Transparent" dragAndDrop:DragAndDropService.DropCommand="{Binding ElementName=view,Path=DataContext.SegmentDroppedCommand}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.Droppable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding ElementName=DraggingSurface}">
- <Grid.Style>
- <Style TargetType="Grid">
- <Setter Property="Opacity" Value="1"></Setter>
- <Style.Triggers>
- <Trigger Property="dragAndDrop:DragAndDropService.IsDraggableOver" Value="True">
- <Setter Property="Opacity" Value="0.5"></Setter>
- </Trigger>
- </Style.Triggers>
- </Style>
- </Grid.Style>
- <DockPanel>
- <DockPanel.Style>
- <Style TargetType="DockPanel">
- <Setter Property="Height" Value="163"></Setter>
- <Style.Triggers>
- <DataTrigger Binding="{Binding ElementName=toggle_small_list,Path=IsChecked,IsAsync=True}" Value="True">
- <Setter Property="Height" Value="74"></Setter>
- </DataTrigger>
- </Style.Triggers>
- </Style>
- </DockPanel.Style>
-
- <Border DockPanel.Dock="Left" BorderThickness="0 0 1 0" BorderBrush="{StaticResource TangoLightBorderBrush}">
- <Border.Background>
- <ImageBrush ImageSource="{StaticResource Image_Transparent}" Stretch="None" />
- </Border.Background>
- <Border.Style>
- <Style TargetType="Border">
- <Setter Property="CornerRadius" Value="8 0 0 8"></Setter>
- <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,IsAsync=True}"></Setter>
+ <touch:TouchVirtualizedContentReplaceControl Margin="0 0 0 15" MinHeight="165" Disconnect="False">
+ <touch:TouchVirtualizedContentReplaceControl.Content>
+ <DataTemplate>
+ <Border RenderOptions.EdgeMode="Unspecified" CornerRadius="8" Background="{StaticResource TangoPrimaryBackgroundBrush}" BorderThickness="1" BorderBrush="{StaticResource TangoGrayBrush}">
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="Auto" />
+ <RowDefinition Height="Auto" />
+ </Grid.RowDefinitions>
+ <Grid Background="Transparent" dragAndDrop:DragAndDropService.DropCommand="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.SegmentDroppedCommand}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.Droppable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding ElementName=DraggingSurface}">
+ <Grid.Style>
+ <Style TargetType="Grid">
+ <Setter Property="Opacity" Value="1"></Setter>
<Style.Triggers>
- <DataTrigger Binding="{Binding ElementName=toggle_small_list,Path=IsChecked,IsAsync=True}" Value="True">
- <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,Converter={StaticResource MathOperatorConverter},ConverterParameter='*2',IsAsync=True}"></Setter>
- </DataTrigger>
- <MultiDataTrigger>
- <MultiDataTrigger.Conditions>
- <Condition Binding="{Binding Converter={StaticResource IsSegmentGradientConverter},IsAsync=True}" Value="True"></Condition>
- <Condition Binding="{Binding ElementName=toggle_large_list,Path=IsChecked,IsAsync=True}" Value="True"></Condition>
- </MultiDataTrigger.Conditions>
- <Setter Property="CornerRadius" Value="8 0 0 0"></Setter>
- </MultiDataTrigger>
+ <Trigger Property="dragAndDrop:DragAndDropService.IsDraggableOver" Value="True">
+ <Setter Property="Opacity" Value="0.5"></Setter>
+ </Trigger>
</Style.Triggers>
</Style>
- </Border.Style>
- <Border Background="{Binding SegmentBrush}">
- <Border.Style>
- <Style TargetType="Border">
- <Setter Property="CornerRadius" Value="8 0 0 8"></Setter>
- <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,IsAsync=True}"></Setter>
+ </Grid.Style>
+ <DockPanel>
+ <DockPanel.Style>
+ <Style TargetType="DockPanel">
+ <Setter Property="Height" Value="163"></Setter>
<Style.Triggers>
- <DataTrigger Binding="{Binding ElementName=toggle_small_list,Path=IsChecked,IsAsync=True}" Value="True">
- <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,Converter={StaticResource MathOperatorConverter},ConverterParameter='*2',IsAsync=True}"></Setter>
+ <DataTrigger Binding="{Binding ElementName=toggle_small_list,Path=IsChecked}" Value="True">
+ <Setter Property="Height" Value="74"></Setter>
</DataTrigger>
- <MultiDataTrigger>
- <MultiDataTrigger.Conditions>
- <Condition Binding="{Binding Converter={StaticResource IsSegmentGradientConverter},IsAsync=True}" Value="True"></Condition>
- <Condition Binding="{Binding ElementName=toggle_large_list,Path=IsChecked,IsAsync=True}" Value="True"></Condition>
- </MultiDataTrigger.Conditions>
- <Setter Property="CornerRadius" Value="8 0 0 0"></Setter>
- </MultiDataTrigger>
</Style.Triggers>
</Style>
- </Border.Style>
- </Border>
- </Border>
+ </DockPanel.Style>
- <Grid>
- <DockPanel Margin="30 0" VerticalAlignment="Center">
- <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
- <Canvas Visibility="{Binding HasOutOfGamutBrushStop,Converter={StaticResource BooleanToVisibilityConverter},IsAsync=True}">
- <Image Canvas.Left="-25" Canvas.Top="1" Source="{StaticResource Image_Out_Of_Gamut}" Width="19" Height="19" />
- </Canvas>
- <TextBlock FontSize="{StaticResource TangoTitleFontSize}">
- <Run>Segment #</Run>
- <Run Text="{Binding SegmentIndex,Mode=OneWay,IsAsync=True}"></Run>
- </TextBlock>
- </StackPanel>
+ <Border DockPanel.Dock="Left" BorderThickness="0 0 1 0" BorderBrush="{StaticResource TangoLightBorderBrush}">
+ <!--<Border.Background>
+ <ImageBrush ImageSource="{StaticResource Image_Transparent}" Stretch="None" />
+ </Border.Background>-->
+ <Border.Style>
+ <Style TargetType="Border">
+ <Setter Property="CornerRadius" Value="8 0 0 8"></Setter>
+ <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight}"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding ElementName=toggle_small_list,Path=IsChecked}" Value="True">
+ <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,Converter={StaticResource MathOperatorConverter},ConverterParameter='*2'}"></Setter>
+ </DataTrigger>
+ <MultiDataTrigger>
+ <MultiDataTrigger.Conditions>
+ <Condition Binding="{Binding Converter={StaticResource IsSegmentGradientConverter}}" Value="True"></Condition>
+ <Condition Binding="{Binding ElementName=toggle_large_list,Path=IsChecked}" Value="True"></Condition>
+ </MultiDataTrigger.Conditions>
+ <Setter Property="CornerRadius" Value="8 0 0 0"></Setter>
+ </MultiDataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Border.Style>
+ <Border Background="{Binding SegmentBrush}">
+ <Border.Style>
+ <Style TargetType="Border">
+ <Setter Property="CornerRadius" Value="8 0 0 8"></Setter>
+ <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight}"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding ElementName=toggle_small_list,Path=IsChecked}" Value="True">
+ <Setter Property="Width" Value="{Binding RelativeSource={RelativeSource Self},Path=ActualHeight,Converter={StaticResource MathOperatorConverter},ConverterParameter='*2'}"></Setter>
+ </DataTrigger>
+ <MultiDataTrigger>
+ <MultiDataTrigger.Conditions>
+ <Condition Binding="{Binding Converter={StaticResource IsSegmentGradientConverter}}" Value="True"></Condition>
+ <Condition Binding="{Binding ElementName=toggle_large_list,Path=IsChecked}" Value="True"></Condition>
+ </MultiDataTrigger.Conditions>
+ <Setter Property="CornerRadius" Value="8 0 0 0"></Setter>
+ </MultiDataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Border.Style>
+ </Border>
+ </Border>
<Grid>
- <StackPanel Margin="0 5 0 0" HorizontalAlignment="Left" Width="300" Visibility="{Binding ElementName=toggle_large_list,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter},IsAsync=True}">
- <DockPanel LastChildFill="False" Margin="0 0 0 0">
- <TextBlock Text="Color space:" VerticalAlignment="Bottom"></TextBlock>
- <touch:TouchComboBox DockPanel.Dock="Right" ItemsSource="{Binding ElementName=view,Path=DataContext.ColorSpaces}" SelectedItem="{Binding BrushStops[0].ColorSpace}" DisplayMemberPath="Name" Title="Select Color Space" Width="179" HorizontalAlignment="Right" />
- </DockPanel>
- <DockPanel LastChildFill="False" Margin="0 5 0 0">
- <DockPanel.Style>
- <Style TargetType="DockPanel">
- <Setter Property="Visibility" Value="Visible"></Setter>
- <Style.Triggers>
- <DataTrigger Binding="{Binding Converter={StaticResource IsSegmentGradientConverter},IsAsync=True}" Value="True">
+ <DockPanel Margin="30 0" VerticalAlignment="Center">
+ <StackPanel DockPanel.Dock="Top" Orientation="Horizontal">
+ <Canvas Visibility="{Binding HasOutOfGamutBrushStop,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <Image Canvas.Left="-25" Canvas.Top="1" Source="{StaticResource Image_Out_Of_Gamut}" Width="19" Height="19" />
+ </Canvas>
+ <DockPanel>
+ <controls:FastTextBlock FontSize="{StaticResource TangoTitleFontSize}">Segment #</controls:FastTextBlock>
+ <controls:FastTextBlock FontSize="{StaticResource TangoTitleFontSize}" Text="{Binding SegmentIndex,Mode=OneWay}"></controls:FastTextBlock>
+ </DockPanel>
+ </StackPanel>
+
+ <Grid>
+ <StackPanel Margin="0 5 0 0" HorizontalAlignment="Left" Width="300" Visibility="{Binding ElementName=toggle_large_list,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}">
+ <DockPanel LastChildFill="False" Margin="0 0 0 0">
+ <controls:FastTextBlock Text="Color space:" VerticalAlignment="Bottom"></controls:FastTextBlock>
+ <touch:TouchComboBox DockPanel.Dock="Right" ItemsSource="{Binding ElementName=view,Path=DataContext.ColorSpaces}" SelectedItem="{Binding BrushStops[0].ColorSpace}" DisplayMemberPath="Name" Title="Select Color Space" Width="179" HorizontalAlignment="Right" />
+ </DockPanel>
+ <DockPanel LastChildFill="False" Margin="0 5 0 0">
+ <DockPanel.Style>
+ <Style TargetType="DockPanel">
+ <Setter Property="Visibility" Value="Visible"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding Converter={StaticResource IsSegmentGradientConverter}}" Value="True">
+ <Setter Property="Visibility" Value="Collapsed"></Setter>
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </DockPanel.Style>
+ <controls:FastTextBlock VerticalAlignment="Bottom" DockPanel.Dock="Left" Text="Color code:"></controls:FastTextBlock>
+
+ <Grid DockPanel.Dock="Right" DataContext="{Binding BrushStops[0]}">
+ <StackPanel>
+ <ContentControl Focusable="False" FocusVisualStyle="{x:Null}" d:DataContext="{d:DesignInstance Type=entities:BrushStop, IsDesignTimeCreatable=False}" Content="{Binding}" Width="180">
+ <ContentControl.Style>
+ <Style TargetType="ContentControl">
+ <Setter Property="ContentTemplate">
+ <Setter.Value>
+ <DataTemplate>
+
+ </DataTemplate>
+ </Setter.Value>
+ </Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding ColorSpace.Name}" Value="RGB">
+ <Setter Property="ContentTemplate" Value="{StaticResource RGB_Template}" />
+ </DataTrigger>
+ <DataTrigger Binding="{Binding ColorSpace.Name}" Value="CMYK">
+ <Setter Property="ContentTemplate" Value="{StaticResource CMYK_Template}" />
+ </DataTrigger>
+ <DataTrigger Binding="{Binding ColorSpace.Name}" Value="LAB">
+ <Setter Property="ContentTemplate" Value="{StaticResource LAB_Template}" />
+ </DataTrigger>
+ <DataTrigger Binding="{Binding ColorSpace.Name}" Value="Catalog">
+ <Setter Property="ContentTemplate" Value="{StaticResource CATALOG_Template}" />
+ </DataTrigger>
+ <DataTrigger Binding="{Binding ColorSpace.Name}" Value="Volume">
+ <Setter Property="ContentTemplate" Value="{StaticResource Volume_Template}" />
+ </DataTrigger>
+ </Style.Triggers>
+ </Style>
+ </ContentControl.Style>
+ </ContentControl>
+ </StackPanel>
+ </Grid>
+ </DockPanel>
+ <Canvas>
+ <Canvas.Style>
+ <Style TargetType="Canvas">
<Setter Property="Visibility" Value="Collapsed"></Setter>
+ <Style.Triggers>
+ <MultiDataTrigger>
+ <MultiDataTrigger.Conditions>
+ <Condition Binding="{Binding Converter={StaticResource IsSegmentGradientConverter}}" Value="False" />
+ <Condition Binding="{Binding BrushStops[0].IsOutOfGamut}" Value="True" />
+ </MultiDataTrigger.Conditions>
+ <Setter Property="Visibility" Value="Visible"></Setter>
+ </MultiDataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Canvas.Style>
+ <TextBlock Canvas.Top="2" Foreground="{StaticResource TangoErrorBrush}" FontSize="{StaticResource TangoSmallFontSize}" Text="Color is out of gamut. Modify color or select an alternative."></TextBlock>
+ </Canvas>
+ <DockPanel LastChildFill="False" Margin="0 0 0 0">
+ <controls:FastTextBlock VerticalAlignment="Bottom" DockPanel.Dock="Left" Text="Length (m):"></controls:FastTextBlock>
+ <touch:TouchNumericTextBox Width="180" DockPanel.Dock="Right" Value="{Binding Length}" StringFormat="0.0" AutoCalculateJogStep="False" HasDecimalPoint="True" Minimum="1" Maximum="100000" KeyboardContainer="{Binding ElementName=Container}" />
+ </DockPanel>
+ </StackPanel>
+ </Grid>
+ </DockPanel>
+
+ <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0 10 10 0">
+ <TextBlock Visibility="{Binding ElementName=toggle_small_list,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}" HorizontalAlignment="Right" VerticalAlignment="Center" Text="{Binding Length,StringFormat={}{0:N1} m}">
+ <TextBlock.Style>
+ <Style TargetType="TextBlock">
+ <Setter Property="Margin" Value="0 16 20 0"></Setter>
+ <Style.Triggers>
+ <DataTrigger Binding="{Binding ElementName=toggleEdit,Path=IsChecked}" Value="True">
+ <Setter Property="Margin" Value="0 5 20 0"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
- </DockPanel.Style>
- <TextBlock VerticalAlignment="Bottom" DockPanel.Dock="Left" Text="Color code:"></TextBlock>
-
- <Grid DockPanel.Dock="Right" DataContext="{Binding BrushStops[0],IsAsync=True}">
- <StackPanel>
- <ContentControl Focusable="False" FocusVisualStyle="{x:Null}" d:DataContext="{d:DesignInstance Type=entities:BrushStop, IsDesignTimeCreatable=False}" Content="{Binding}" Width="180">
- <ContentControl.Style>
- <Style TargetType="ContentControl">
- <Setter Property="ContentTemplate">
- <Setter.Value>
- <DataTemplate>
+ </TextBlock.Style>
+ </TextBlock>
- </DataTemplate>
- </Setter.Value>
- </Setter>
- <Style.Triggers>
- <DataTrigger Binding="{Binding ColorSpace.Name,IsAsync=True}" Value="RGB">
- <Setter Property="ContentTemplate" Value="{StaticResource RGB_Template}" />
- </DataTrigger>
- <DataTrigger Binding="{Binding ColorSpace.Name,IsAsync=True}" Value="CMYK">
- <Setter Property="ContentTemplate" Value="{StaticResource CMYK_Template}" />
- </DataTrigger>
- <DataTrigger Binding="{Binding ColorSpace.Name,IsAsync=True}" Value="LAB">
- <Setter Property="ContentTemplate" Value="{StaticResource LAB_Template}" />
- </DataTrigger>
- <DataTrigger Binding="{Binding ColorSpace.Name,IsAsync=True}" Value="Catalog">
- <Setter Property="ContentTemplate" Value="{StaticResource CATALOG_Template}" />
- </DataTrigger>
- <DataTrigger Binding="{Binding ColorSpace.Name,IsAsync=True}" Value="Volume">
- <Setter Property="ContentTemplate" Value="{StaticResource Volume_Template}" />
- </DataTrigger>
- </Style.Triggers>
- </Style>
- </ContentControl.Style>
- </ContentControl>
- </StackPanel>
- </Grid>
- </DockPanel>
- <Canvas>
- <Canvas.Style>
- <Style TargetType="Canvas">
+ <StackPanel Orientation="Horizontal">
+ <StackPanel.Style>
+ <Style TargetType="StackPanel">
<Setter Property="Visibility" Value="Collapsed"></Setter>
<Style.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
- <Condition Binding="{Binding Converter={StaticResource IsSegmentGradientConverter},IsAsync=True}" Value="False" />
- <Condition Binding="{Binding BrushStops[0].IsOutOfGamut,IsAsync=True}" Value="True" />
+ <Condition Binding="{Binding ElementName=toggleEdit,Path=IsChecked}" Value="False" />
+ <Condition Binding="{Binding ElementName=toggle_large_list,Path=IsChecked}" Value="True" />
+ <Condition Binding="{Binding Converter={StaticResource IsSegmentGradientConverter}}" Value="False" />
</MultiDataTrigger.Conditions>
<Setter Property="Visibility" Value="Visible"></Setter>
</MultiDataTrigger>
</Style.Triggers>
</Style>
- </Canvas.Style>
- <TextBlock Canvas.Top="2" Foreground="{StaticResource TangoErrorBrush}" FontSize="{StaticResource TangoSmallFontSize}" Text="Color is out of gamut. Modify color or select an alternative."></TextBlock>
- </Canvas>
- <DockPanel LastChildFill="False" Margin="0 0 0 0">
- <TextBlock VerticalAlignment="Bottom" DockPanel.Dock="Left" Text="Length (m):"></TextBlock>
- <touch:TouchNumericTextBox Width="180" DockPanel.Dock="Right" Value="{Binding Length}" StringFormat="0.0" AutoCalculateJogStep="False" HasDecimalPoint="True" Minimum="1" Maximum="100000" KeyboardContainer="{Binding ElementName=Container}" />
- </DockPanel>
- </StackPanel>
- </Grid>
- </DockPanel>
-
- <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0 10 10 0">
- <TextBlock Visibility="{Binding ElementName=toggle_small_list,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter},IsAsync=True}" HorizontalAlignment="Right" VerticalAlignment="Center" Text="{Binding Length,StringFormat={}{0:N1} m}">
- <TextBlock.Style>
- <Style TargetType="TextBlock">
- <Setter Property="Margin" Value="0 16 20 0"></Setter>
- <Style.Triggers>
- <DataTrigger Binding="{Binding ElementName=toggleEdit,Path=IsChecked}" Value="True">
- <Setter Property="Margin" Value="0 5 20 0"></Setter>
- </DataTrigger>
- </Style.Triggers>
- </Style>
- </TextBlock.Style>
- </TextBlock>
-
- <StackPanel Orientation="Horizontal">
- <StackPanel.Style>
- <Style TargetType="StackPanel">
- <Setter Property="Visibility" Value="Collapsed"></Setter>
- <Style.Triggers>
- <MultiDataTrigger>
- <MultiDataTrigger.Conditions>
- <Condition Binding="{Binding ElementName=toggleEdit,Path=IsChecked,IsAsync=True}" Value="False" />
- <Condition Binding="{Binding ElementName=toggle_large_list,Path=IsChecked,IsAsync=True}" Value="True" />
- <Condition Binding="{Binding Converter={StaticResource IsSegmentGradientConverter},IsAsync=True}" Value="False" />
- </MultiDataTrigger.Conditions>
- <Setter Property="Visibility" Value="Visible"></Setter>
- </MultiDataTrigger>
- </Style.Triggers>
- </Style>
- </StackPanel.Style>
+ </StackPanel.Style>
- <!--<touch:TouchToggleIconButton Padding="15" Width="60" Height="60" CornerRadius="30" Icon="EyeOutline" CheckedIcon="EyeOffOutline" Foreground="{StaticResource TangoGrayBrush}" CheckedForeground="{StaticResource TangoGrayBrush}" IsChecked="{Binding BrushStops[0].IsTransparent,IsAsync=True}"></touch:TouchToggleIconButton>-->
+ <!--<touch:TouchToggleIconButton Padding="15" Width="60" Height="60" CornerRadius="30" Icon="EyeOutline" CheckedIcon="EyeOffOutline" Foreground="{StaticResource TangoGrayBrush}" CheckedForeground="{StaticResource TangoGrayBrush}" IsChecked="{Binding BrushStops[0].IsTransparent}"></touch:TouchToggleIconButton>-->
- <touch:TouchImageButton Visibility="{Binding BrushStops[0].ColorSpace,Converter={StaticResource ColorSpaceToVisibilityConverter},IsAsync=True}" Command="{Binding ElementName=view,Path=DataContext.ReplaceBrushStopCommand}" CommandParameter="{Binding BrushStops[0]}" Width="50" Height="50" Padding="10" Image="{StaticResource Image_Replace_Color}" CornerRadius="30"></touch:TouchImageButton>
- </StackPanel>
+ <touch:TouchImageButton Visibility="{Binding BrushStops[0].ColorSpace,Converter={StaticResource ColorSpaceToVisibilityConverter}}" Command="{Binding ElementName=view,Path=DataContext.ReplaceBrushStopCommand}" CommandParameter="{Binding BrushStops[0]}" Width="50" Height="50" Padding="10" Image="{StaticResource Image_Replace_Color}" CornerRadius="30"></touch:TouchImageButton>
+ </StackPanel>
- <StackPanel Visibility="{Binding ElementName=toggleEdit,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter},IsAsync=True}" Orientation="Horizontal">
+ <StackPanel Visibility="{Binding ElementName=toggleEdit,Path=IsChecked,Converter={StaticResource BooleanToVisibilityConverter}}" Orientation="Horizontal">
- <touch:TouchIconButton Command="{Binding ElementName=view,Path=DataContext.RemoveSegmentCommand}" CommandParameter="{Binding}" EnableDropShadow="False" Icon="TrashAltRegular" Padding="12" Foreground="{StaticResource TangoPrimaryAccentBrush}" Width="50" Height="50" RippleBrush="{StaticResource TangoRippleDarkBrush}" CornerRadius="30" />
+ <touch:TouchIconButton Command="{Binding ElementName=view,Path=DataContext.RemoveSegmentCommand}" CommandParameter="{Binding}" EnableDropShadow="False" Icon="TrashAltRegular" Padding="12" Foreground="{StaticResource TangoPrimaryAccentBrush}" Width="50" Height="50" RippleBrush="{StaticResource TangoRippleDarkBrush}" CornerRadius="30" />
- <dragAndDrop:DragThumb Background="Transparent" IsHitTestVisible="True">
- <touch:TouchIconButton IsHitTestVisible="False" EnableDropShadow="False" Icon="BarsSolid" Padding="15" Foreground="{StaticResource TangoPrimaryAccentBrush}" Width="50" Height="50" RippleBrush="{StaticResource TangoRippleDarkBrush}" CornerRadius="30" />
- </dragAndDrop:DragThumb>
- </StackPanel>
- </StackPanel>
+ <dragAndDrop:DragThumb Background="Transparent" IsHitTestVisible="True">
+ <touch:TouchIconButton IsHitTestVisible="False" EnableDropShadow="False" Icon="BarsSolid" Padding="15" Foreground="{StaticResource TangoPrimaryAccentBrush}" Width="50" Height="50" RippleBrush="{StaticResource TangoRippleDarkBrush}" CornerRadius="30" />
+ </dragAndDrop:DragThumb>
+ </StackPanel>
+ </StackPanel>
+ </Grid>
+ </DockPanel>
</Grid>
- </DockPanel>
- </Grid>
- <Border Grid.Row="1" BorderBrush="{StaticResource TangoGrayBrush}" BorderThickness="0 1 0 0">
- <Border.Style>
- <Style TargetType="Border">
- <Setter Property="Visibility" Value="Collapsed"></Setter>
- <Style.Triggers>
- <MultiDataTrigger>
- <MultiDataTrigger.Conditions>
- <Condition Binding="{Binding Converter={StaticResource IsSegmentGradientConverter},IsAsync=True}" Value="True"></Condition>
- <Condition Binding="{Binding ElementName=toggle_large_list,Path=IsChecked,IsAsync=True}" Value="True"></Condition>
- </MultiDataTrigger.Conditions>
+ <Border Grid.Row="1" BorderBrush="{StaticResource TangoGrayBrush}" BorderThickness="0 1 0 0">
+ <Border.Style>
+ <Style TargetType="Border">
+ <Setter Property="Visibility" Value="Collapsed"></Setter>
+ <Style.Triggers>
+ <MultiDataTrigger>
+ <MultiDataTrigger.Conditions>
+ <Condition Binding="{Binding Converter={StaticResource IsSegmentGradientConverter}}" Value="True"></Condition>
+ <Condition Binding="{Binding ElementName=toggle_large_list,Path=IsChecked}" Value="True"></Condition>
+ </MultiDataTrigger.Conditions>
- <Setter Property="Visibility" Value="Visible"></Setter>
- </MultiDataTrigger>
- </Style.Triggers>
- </Style>
- </Border.Style>
+ <Setter Property="Visibility" Value="Visible"></Setter>
+ </MultiDataTrigger>
+ </Style.Triggers>
+ </Style>
+ </Border.Style>
- <StackPanel>
- <ItemsControl ItemsSource="{Binding BrushStops}" ItemTemplate="{StaticResource BrushStop_Template}">
+ <StackPanel>
+ <ItemsControl ItemsSource="{Binding BrushStops}" ItemTemplate="{StaticResource BrushStop_Template}">
- </ItemsControl>
+ </ItemsControl>
- <touch:TouchButton Command="{Binding ElementName=view,Path=DataContext.AddBrushStopCommand}" CommandParameter="{Binding}" Background="Transparent" RippleBrush="{StaticResource TangoRippleDarkBrush}" FontWeight="Normal" Foreground="{StaticResource TangoPrimaryAccentBrush}" HorizontalAlignment="Left" EnableDropShadow="False" Margin="50 30 0 60">
- <StackPanel Orientation="Horizontal">
- <Grid Width="49" Height="49">
- <Rectangle Stroke="{StaticResource TangoPrimaryAccentBrush}" StrokeThickness="1" StrokeDashArray="5 5 5 5" RadiusX="5" RadiusY="5"></Rectangle>
- <fa:ImageAwesome Icon="Plus" Width="16" Height="16" Foreground="{StaticResource TangoPrimaryAccentBrush}" />
- </Grid>
+ <touch:TouchButton Command="{Binding ElementName=view,Path=DataContext.AddBrushStopCommand}" CommandParameter="{Binding}" Background="Transparent" RippleBrush="{StaticResource TangoRippleDarkBrush}" FontWeight="Normal" Foreground="{StaticResource TangoPrimaryAccentBrush}" HorizontalAlignment="Left" EnableDropShadow="False" Margin="50 30 0 60">
+ <StackPanel Orientation="Horizontal">
+ <Grid Width="49" Height="49">
+ <Rectangle Stroke="{StaticResource TangoPrimaryAccentBrush}" StrokeThickness="1" StrokeDashArray="5 5 5 5" RadiusX="5" RadiusY="5"></Rectangle>
+ <fa:ImageAwesome Icon="Plus" Width="16" Height="16" Foreground="{StaticResource TangoPrimaryAccentBrush}" />
+ </Grid>
- <TextBlock VerticalAlignment="Center" Margin="20 0 0 0">ADD COLOR</TextBlock>
+ <TextBlock VerticalAlignment="Center" Margin="20 0 0 0">ADD COLOR</TextBlock>
+ </StackPanel>
+ </touch:TouchButton>
</StackPanel>
- </touch:TouchButton>
- </StackPanel>
+ </Border>
+ </Grid>
</Border>
- </Grid>
- </Border>
- </touch:TouchVirtualizedContentControl>
+ </DataTemplate>
+ </touch:TouchVirtualizedContentReplaceControl.Content>
+ </touch:TouchVirtualizedContentReplaceControl>
</DataTemplate>
</UserControl.Resources>
@@ -465,11 +466,6 @@
<touch:TouchLoadingPanel Grid.Row="1" IsLoading="{Binding IsBusy}">
<Grid>
-
- <Grid.CacheMode>
- <BitmapCache RenderAtScale="1" SnapsToDevicePixels="False" />
- </Grid.CacheMode>
-
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="Auto"/>
@@ -706,7 +702,11 @@
<StackPanel Style="{StaticResource Level2ContainerExtraMargin}">
<Grid>
- <localControls:JobSummeryViewer DataContext="{Binding Job,IsAsync=True}" Height="40"/>
+ <touch:TouchVirtualizedContentReplaceControl MinHeight="40">
+ <DataTemplate>
+ <localControls:JobSummeryViewer Job="{Binding Job}" Height="40" DisplayMarkers="False" />
+ </DataTemplate>
+ </touch:TouchVirtualizedContentReplaceControl>
</Grid>
<DockPanel Margin="0 30 0 0" LastChildFill="False">
diff --git a/Software/Visual_Studio/Tango.SharedUI/Components/LazyBinding.cs b/Software/Visual_Studio/Tango.SharedUI/Components/LazyBinding.cs
new file mode 100644
index 000000000..e8e22d182
--- /dev/null
+++ b/Software/Visual_Studio/Tango.SharedUI/Components/LazyBinding.cs
@@ -0,0 +1,160 @@
+using System;
+using System.ComponentModel;
+using System.Globalization;
+using System.Windows;
+using System.Windows.Data;
+using System.Windows.Markup;
+
+namespace Tango.SharedUI.Components
+{
+ [MarkupExtensionReturnType(typeof(object))]
+ public class LazyBindingExtension : MarkupExtension
+ {
+ public LazyBindingExtension()
+ { }
+
+ public LazyBindingExtension(PropertyPath path) : this()
+ {
+ Path = path;
+ }
+
+ #region Properties
+
+ public IValueConverter Converter { get; set; }
+ [TypeConverter(typeof(CultureInfoIetfLanguageTagConverter))]
+ public CultureInfo ConverterCulture { get; set; }
+ public object ConverterParamter { get; set; }
+ public string ElementName { get; set; }
+ [ConstructorArgument("path")]
+ public PropertyPath Path { get; set; }
+ public RelativeSource RelativeSource { get; set; }
+ public object Source { get; set; }
+ public UpdateSourceTrigger UpdateSourceTrigger { get; set; }
+ public bool ValidatesOnDataErrors { get; set; }
+ public bool ValidatesOnExceptions { get; set; }
+ public bool ValidatesOnNotifyDataErrors { get; set; }
+
+ private Binding binding;
+ private UIElement bindingTarget;
+ private DependencyProperty bindingTargetProperty;
+
+ #endregion
+
+ #region Init
+
+ public override object ProvideValue(IServiceProvider serviceProvider)
+ {
+ var valueProvider = serviceProvider.GetService(typeof(IProvideValueTarget)) as IProvideValueTarget;
+ if (valueProvider != null)
+ {
+ bindingTarget = valueProvider.TargetObject as UIElement;
+
+ if (bindingTarget == null)
+ {
+ throw new NotSupportedException($"Target '{valueProvider.TargetObject}' is not valid for a LazyBinding. The LazyBinding target must be a UIElement.");
+ }
+
+ bindingTargetProperty = valueProvider.TargetProperty as DependencyProperty;
+
+ if (bindingTargetProperty == null)
+ {
+ throw new NotSupportedException($"The property '{valueProvider.TargetProperty}' is not valid for a LazyBinding. The LazyBinding target property must be a DependencyProperty.");
+ }
+
+ binding = new Binding
+ {
+ Path = Path,
+ Converter = Converter,
+ ConverterCulture = ConverterCulture,
+ ConverterParameter = ConverterParamter
+ };
+
+ if (ElementName != null)
+ {
+ binding.ElementName = ElementName;
+ }
+
+ if (RelativeSource != null)
+ {
+ binding.RelativeSource = RelativeSource;
+ }
+
+ if (Source != null)
+ {
+ binding.Source = Source;
+ }
+
+ binding.UpdateSourceTrigger = UpdateSourceTrigger;
+ binding.ValidatesOnDataErrors = ValidatesOnDataErrors;
+ binding.ValidatesOnExceptions = ValidatesOnExceptions;
+ binding.ValidatesOnNotifyDataErrors = ValidatesOnNotifyDataErrors;
+
+ return SetBinding();
+ }
+
+ return null;
+ }
+
+ public object SetBinding()
+ {
+ bindingTarget.IsVisibleChanged += UiElement_IsVisibleChanged;
+
+ updateBinding();
+
+ return bindingTarget.GetValue(bindingTargetProperty);
+ }
+
+ #endregion
+
+ #region Event Handlers
+
+ private void UiElement_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
+ {
+ updateBinding();
+ }
+
+ #endregion
+
+ #region Update Binding
+
+ private void updateBinding()
+ {
+ if (bindingTarget.IsVisible)
+ {
+ ConsolidateBinding();
+ }
+ else
+ {
+ ClearBinding();
+ }
+ }
+
+ private bool _isBind;
+
+ private void ConsolidateBinding()
+ {
+ if (_isBind)
+ {
+ return;
+ }
+
+ _isBind = true;
+
+ BindingOperations.SetBinding(bindingTarget, bindingTargetProperty, binding);
+ }
+
+ private void ClearBinding()
+ {
+ if (!_isBind)
+ {
+ return;
+ }
+
+ BindingOperations.ClearBinding(bindingTarget, bindingTargetProperty);
+
+ _isBind = false;
+ }
+
+ #endregion
+ }
+}
diff --git a/Software/Visual_Studio/Tango.SharedUI/Controls/FastTextBlock.cs b/Software/Visual_Studio/Tango.SharedUI/Controls/FastTextBlock.cs
index 141fa6e27..07005a0f4 100644
--- a/Software/Visual_Studio/Tango.SharedUI/Controls/FastTextBlock.cs
+++ b/Software/Visual_Studio/Tango.SharedUI/Controls/FastTextBlock.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.Globalization;
using System.Linq;
using System.Text;
@@ -30,6 +31,23 @@ namespace Tango.SharedUI.Controls
public FastTextBlock()
{
Loaded += FastTextBlock_Loaded;
+
+ DependencyPropertyDescriptor fontFamilyPropertyDescriptor = DependencyPropertyDescriptor.FromProperty(FastTextBlock.FontFamilyProperty, typeof(FastTextBlock));
+ fontFamilyPropertyDescriptor.AddValueChanged(this, OnPropertyChangedInit);
+
+ DependencyPropertyDescriptor fontSizePropertyDescriptor = DependencyPropertyDescriptor.FromProperty(FastTextBlock.FontSizeProperty, typeof(FastTextBlock));
+ fontSizePropertyDescriptor.AddValueChanged(this, OnPropertyChangedInit);
+
+ DependencyPropertyDescriptor fontWeightPropertyDescriptor = DependencyPropertyDescriptor.FromProperty(FastTextBlock.FontWeightProperty, typeof(FastTextBlock));
+ fontWeightPropertyDescriptor.AddValueChanged(this, OnPropertyChangedInit);
+
+ DependencyPropertyDescriptor ForegroundPropertyDescriptor = DependencyPropertyDescriptor.FromProperty(FastTextBlock.ForegroundProperty, typeof(FastTextBlock));
+ ForegroundPropertyDescriptor.AddValueChanged(this, OnPropertyChangedInit);
+ }
+
+ private void OnPropertyChangedInit(object sender, EventArgs e)
+ {
+ Init();
}
private void FastTextBlock_Loaded(object sender, RoutedEventArgs e)
diff --git a/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj b/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj
index e4dc72746..5d9592a26 100644
--- a/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj
+++ b/Software/Visual_Studio/Tango.SharedUI/Tango.SharedUI.csproj
@@ -67,6 +67,7 @@
<Compile Include="Binding\BindingEventArgs.cs" />
<Compile Include="Binding\BindingEventContainer.cs" />
<Compile Include="Binding\BindingProperty.cs" />
+ <Compile Include="Components\LazyBinding.cs" />
<Compile Include="Components\BindingProxy.cs" />
<Compile Include="Components\SelectedObject.cs" />
<Compile Include="Components\SelectedObjectCollection.cs" />
@@ -261,7 +262,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
+ <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/LightTouchScrollViewer.xaml b/Software/Visual_Studio/Tango.Touch/Controls/LightTouchScrollViewer.xaml
index 7cc38666e..e0e8f485c 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/LightTouchScrollViewer.xaml
+++ b/Software/Visual_Studio/Tango.Touch/Controls/LightTouchScrollViewer.xaml
@@ -25,9 +25,9 @@
<Border x:Name="PART_Border" ClipToBounds="True" Background="Transparent">
<Grid x:Name="PART_Grid_Content" Background="Transparent" VerticalAlignment="Top" Height="{Binding ElementName=stack,Path=ActualHeight,Mode=OneWay}">
<StackPanel x:Name="stack" VerticalAlignment="Top">
- <StackPanel.CacheMode>
+ <!--<StackPanel.CacheMode>
<BitmapCache SnapsToDevicePixels="False" RenderAtScale="1" EnableClearType="False" />
- </StackPanel.CacheMode>
+ </StackPanel.CacheMode>-->
<ContentPresenter x:Name="PART_Content_Presenter" Content="{TemplateBinding Content}" VerticalAlignment="Top" Height="Auto" />
</StackPanel>
</Grid>
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchComboBox.xaml b/Software/Visual_Studio/Tango.Touch/Controls/TouchComboBox.xaml
index 738fe6a3c..83163fcd8 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/TouchComboBox.xaml
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchComboBox.xaml
@@ -31,7 +31,7 @@
<DataTemplate>
<Border>
<DockPanel>
- <Label VerticalAlignment="Center" Padding="30" FontSize="{StaticResource TangoComboBoxItemFontSize}">
+ <Label VerticalAlignment="Center" Padding="30" FontSize="{StaticResource TangoComboBoxItemFontSize}" Foreground="{StaticResource TangoDarkForegroundBrush}">
<Label.Style>
<Style TargetType="Label">
<Setter Property="Background" Value="Transparent"></Setter>
@@ -64,7 +64,7 @@
<Setter Property="SelectedItemTemplate">
<Setter.Value>
<DataTemplate>
- <Label VerticalAlignment="Center" Padding="5 5 5 2">
+ <Label VerticalAlignment="Center" Padding="5 5 5 2" Foreground="{StaticResource TangoDarkForegroundBrush}">
<Label.Content>
<MultiBinding Converter="{StaticResource DisplayMemberPathConverter}">
<Binding Path="." />
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchNumericTextBox.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchNumericTextBox.cs
index da5d5e34b..ccb66d009 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/TouchNumericTextBox.cs
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchNumericTextBox.cs
@@ -21,7 +21,7 @@ namespace Tango.Touch.Controls
{
private TextBox _text_box;
private bool _prevent_text_change;
- private TextBlock _text_block;
+ private FastTextBlock _text_block;
private double _lastValue;
Regex regex_integer = new Regex(@"^-?[0-9]\d*(\d+)?$");
Regex regex_double = new Regex(@"^-?[0-9]\d*(\.\d+)?$");
@@ -124,7 +124,7 @@ namespace Tango.Touch.Controls
base.OnApplyTemplate();
_text_box = GetTemplateChild("PART_TextBox") as TextBox;
- _text_block = GetTemplateChild("PART_TextDisplay") as TextBlock;
+ _text_block = GetTemplateChild("PART_TextDisplay") as FastTextBlock;
_text_box.PreviewTextInput += _text_box_PreviewTextInput;
_text_box.PreviewKeyDown += _text_box_PreviewKeyDown;
_text_box.LostFocus += _text_box_LostFocus;
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchNumericTextBox.xaml b/Software/Visual_Studio/Tango.Touch/Controls/TouchNumericTextBox.xaml
index 2710a954f..d347480d6 100644
--- a/Software/Visual_Studio/Tango.Touch/Controls/TouchNumericTextBox.xaml
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchNumericTextBox.xaml
@@ -10,6 +10,7 @@
<ResourceDictionary.MergedDictionaries>
<!--<ResourceDictionary Source="../Resources/Colors.xaml" />-->
<components:SharedResourceDictionary Source="../Resources/Colors.xaml" />
+ <components:SharedResourceDictionary Source="../Resources/Fonts.xaml" />
</ResourceDictionary.MergedDictionaries>
<converters:StringNullOrEmptyToBooleanConverter x:Key="StringNullOrEmptyToBooleanConverter" />
@@ -100,7 +101,7 @@
</Style>
</TextBox.Style>
</TextBox>
- <TextBlock x:Name="PART_TextDisplay" FontSize="{TemplateBinding FontSize}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" IsHitTestVisible="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Foreground="{TemplateBinding Foreground}" Padding="0 0 0 4" FocusVisualStyle="{x:Null}" Visibility="{Binding ElementName=PART_TextBox,Path=IsFocused,Converter={StaticResource BooleanToVisibilityInverseConverter}}"></TextBlock>
+ <controls:FastTextBlock FontFamily="{StaticResource TangoFlexoFontFamily}" x:Name="PART_TextDisplay" FontSize="{TemplateBinding FontSize}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}" IsHitTestVisible="False" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" Foreground="{TemplateBinding Foreground}" Padding="0 0 0 4" FocusVisualStyle="{x:Null}" Visibility="{Binding ElementName=PART_TextBox,Path=IsFocused,Converter={StaticResource BooleanToVisibilityInverseConverter}}"></controls:FastTextBlock>
</Grid>
</components:Ripple>
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchVirtualizedContentReplaceControl.cs b/Software/Visual_Studio/Tango.Touch/Controls/TouchVirtualizedContentReplaceControl.cs
new file mode 100644
index 000000000..802d3f538
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchVirtualizedContentReplaceControl.cs
@@ -0,0 +1,188 @@
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Markup;
+using System.Windows.Shapes;
+using System.Windows.Threading;
+using Tango.Core.Threading;
+
+namespace Tango.Touch.Controls
+{
+ [ContentProperty(nameof(Content))]
+ public class TouchVirtualizedContentReplaceControl : Control
+ {
+ private LightTouchScrollViewer _scrollViewer;
+ private Border _innerBorder;
+ private ActionTimer _updateTimer;
+ private Point _location;
+ private bool _loaded;
+ private Image _replaceContent;
+ private FrameworkElement _element;
+ private INameScopeDictionary _parentNameScope;
+
+ public DataTemplate Content
+ {
+ get { return (DataTemplate)GetValue(ContentProperty); }
+ set { SetValue(ContentProperty, value); }
+ }
+ public static readonly DependencyProperty ContentProperty =
+ DependencyProperty.Register("Content", typeof(DataTemplate), typeof(TouchVirtualizedContentReplaceControl), new PropertyMetadata(null));
+
+ public bool CanMovePosition
+ {
+ get { return (bool)GetValue(CanMovePositionProperty); }
+ set { SetValue(CanMovePositionProperty, value); }
+ }
+ public static readonly DependencyProperty CanMovePositionProperty =
+ DependencyProperty.Register("CanMovePosition", typeof(bool), typeof(TouchVirtualizedContentReplaceControl), new PropertyMetadata(false));
+
+ public LightTouchDataGrid DataGrid
+ {
+ get { return (LightTouchDataGrid)GetValue(DataGridProperty); }
+ set { SetValue(DataGridProperty, value); }
+ }
+ public static readonly DependencyProperty DataGridProperty =
+ DependencyProperty.Register("DataGrid", typeof(LightTouchDataGrid), typeof(TouchVirtualizedContentReplaceControl), new PropertyMetadata(null));
+
+ public bool Disconnect
+ {
+ get { return (bool)GetValue(DisconnectProperty); }
+ set { SetValue(DisconnectProperty, value); }
+ }
+ public static readonly DependencyProperty DisconnectProperty =
+ DependencyProperty.Register("Disconnect", typeof(bool), typeof(TouchVirtualizedContentReplaceControl), new PropertyMetadata(true));
+
+ static TouchVirtualizedContentReplaceControl()
+ {
+ DefaultStyleKeyProperty.OverrideMetadata(typeof(TouchVirtualizedContentReplaceControl), new FrameworkPropertyMetadata(typeof(TouchVirtualizedContentReplaceControl)));
+ }
+
+ public TouchVirtualizedContentReplaceControl()
+ {
+ _replaceContent = new Image();
+ _updateTimer = new ActionTimer(TimeSpan.FromMilliseconds(100));
+ Loaded += TouchVirtualizedContentControl_Loaded;
+ }
+
+ public override void OnApplyTemplate()
+ {
+ base.OnApplyTemplate();
+ _innerBorder = GetTemplateChild("PART_innerBorder") as Border;
+ _innerBorder.Child = _replaceContent;
+ }
+
+ private void TouchVirtualizedContentControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
+ {
+ _scrollViewer = this.FindAncestor<LightTouchScrollViewer>();
+ _scrollViewer.Scrolling += _scrollViewer_Scrolling;
+
+ _parentNameScope = NameScope.GetNameScope(this.FindAncestor<UserControl>()) as INameScopeDictionary;
+
+ if (DataGrid != null)
+ {
+ DataGrid.SortingChanged += DataGrid_SortingChanged;
+ DataGrid.FilterChanged += DataGrid_FilterChanged;
+ }
+
+ _location = this.TranslatePoint(new Point(0, 0), _scrollViewer.GetContentGrid());
+
+ _scrollViewer.GetContentGrid().SizeChanged += TouchVirtualizedContentControl_SizeChanged;
+
+ ApplyVirtualization();
+ _loaded = true;
+ }
+
+ private void DataGrid_FilterChanged(object sender, EventArgs e)
+ {
+ InvalidateVirtualization();
+ }
+
+ private void DataGrid_SortingChanged(object sender, EventArgs e)
+ {
+ InvalidateVirtualization();
+ }
+
+ private void TouchVirtualizedContentControl_SizeChanged(object sender, SizeChangedEventArgs e)
+ {
+ InvalidateVirtualization();
+ }
+
+ private void _scrollViewer_Scrolling(object sender, DoubleValueChangedEventArgs e)
+ {
+ if (_loaded)
+ {
+ ApplyVirtualization();
+ }
+ }
+
+ private void InvalidateVirtualization()
+ {
+ _updateTimer.ResetReplace(() =>
+ {
+ Dispatcher.Invoke(new Action(() =>
+ {
+ _location = this.TranslatePoint(new Point(0, 0), _scrollViewer.GetContentGrid());
+ ApplyVirtualization();
+ }));
+ });
+ }
+
+ private void ApplyVirtualization()
+ {
+ if (!Disconnect && _element != null)
+ {
+ _updateTimer.Dispose();
+ return;
+ }
+
+ var _border_viewport = _scrollViewer.GetViewportBorder();
+
+ if (CanMovePosition)
+ {
+ _location = this.TranslatePoint(new Point(0, 0), _scrollViewer.GetContentGrid());
+ }
+
+ Rect bounds = new Rect(_location.X, _location.Y, ActualWidth, ActualHeight);
+ Rect rect = new Rect(0.0, _scrollViewer.GetScrollPosition(), _border_viewport.ActualWidth, _border_viewport.ActualHeight);
+
+ if (_innerBorder != null)
+ {
+ if (bounds.IntersectsWith(rect))
+ {
+ if (Disconnect || _element == null)
+ {
+ if (_innerBorder.Child == _replaceContent || _element == null)
+ {
+ _element = Content.LoadContent() as FrameworkElement;
+
+ if (_parentNameScope != null)
+ {
+ NameScope.SetNameScope(_element, _parentNameScope);
+ }
+
+ _innerBorder.Child = _element;
+ _innerBorder.Height = double.NaN;
+ }
+ }
+ }
+ else
+ {
+ if (Disconnect)
+ {
+ if (_innerBorder.Child == _element)
+ {
+ double height = _element != null ? _element.ActualHeight : MinHeight;
+ _innerBorder.Child = _replaceContent;
+ _innerBorder.Height = height;
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/Software/Visual_Studio/Tango.Touch/Controls/TouchVirtualizedContentReplaceControl.xaml b/Software/Visual_Studio/Tango.Touch/Controls/TouchVirtualizedContentReplaceControl.xaml
new file mode 100644
index 000000000..c7fe39b76
--- /dev/null
+++ b/Software/Visual_Studio/Tango.Touch/Controls/TouchVirtualizedContentReplaceControl.xaml
@@ -0,0 +1,15 @@
+<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:local="clr-namespace:Tango.Touch.Controls">
+
+ <Style TargetType="{x:Type local:TouchVirtualizedContentReplaceControl}">
+ <Setter Property="Template">
+ <Setter.Value>
+ <ControlTemplate TargetType="{x:Type local:TouchVirtualizedContentReplaceControl}">
+ <Border x:Name="PART_innerBorder"></Border>
+ </ControlTemplate>
+ </Setter.Value>
+ </Setter>
+ </Style>
+
+</ResourceDictionary> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj b/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj
index 7dd560a48..8575548c4 100644
--- a/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj
+++ b/Software/Visual_Studio/Tango.Touch/Tango.Touch.csproj
@@ -101,6 +101,7 @@
<Compile Include="Controls\TouchToggleIconButton.cs" />
<Compile Include="Controls\TouchToggleImageButton.cs" />
<Compile Include="Controls\TouchToggleSlider.cs" />
+ <Compile Include="Controls\TouchVirtualizedContentReplaceControl.cs" />
<Compile Include="Controls\TouchVirtualizedContentControl.cs" />
<Compile Include="Converters\BlurRadiusToMarginConverter.cs" />
<Compile Include="Converters\DateTimeToCalendarHeaderConverter.cs" />
@@ -277,6 +278,10 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
+ <Page Include="Controls\TouchVirtualizedContentReplaceControl.xaml">
+ <Generator>MSBuild:Compile</Generator>
+ <SubType>Designer</SubType>
+ </Page>
<Page Include="Controls\TouchVirtualizedContentControl.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
@@ -422,7 +427,7 @@
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<ProjectExtensions>
<VisualStudio>
- <UserProperties BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UseGlobalSettings="False" BuildVersion_StartDate="2000/1/1" />
+ <UserProperties BuildVersion_StartDate="2000/1/1" BuildVersion_UseGlobalSettings="False" BuildVersion_BuildVersioningStyle="None.None.Increment.TimeStamp" BuildVersion_UpdateAssemblyVersion="True" BuildVersion_AssemblyInfoFilename="Properties\AssemblyInfo.cs" />
</VisualStudio>
</ProjectExtensions>
</Project> \ No newline at end of file
diff --git a/Software/Visual_Studio/Tango.Touch/Themes/Generic.xaml b/Software/Visual_Studio/Tango.Touch/Themes/Generic.xaml
index ed0f289b0..47403f56b 100644
--- a/Software/Visual_Studio/Tango.Touch/Themes/Generic.xaml
+++ b/Software/Visual_Studio/Tango.Touch/Themes/Generic.xaml
@@ -46,6 +46,7 @@
<ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/TouchCalendar.xaml" />
<ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/TouchDatePicker.xaml" />
<ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/TouchVirtualizedContentControl.xaml" />
+ <ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/TouchVirtualizedContentReplaceControl.xaml" />
<ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/TouchDropShadowBorder.xaml" />
<ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/TouchSimpleDataGrid.xaml" />
<ResourceDictionary Source="pack://application:,,,/Tango.Touch;component/Controls/TouchMultiLineTextBox.xaml" />