References:
Model:
public class TimeLineData { public DateTime TimeStamp { get; set; } public double High { get; set; } public double Low { get; set; } public double Last { get; set; } public double Open { get; set; } public double Volume { get; set; } }
Convertor:
public class LabelConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { if (value.GetType() == typeof(ChartAxisLabel)) { DateTime date; DateTime.TryParse((value as ChartAxisLabel).Content.ToString(), out date); if (date.Month >= 1 && date.Month <= 3) { return "Q1"; } else if (date.Month >= 4 && date.Month <= 6) { return "Q2"; } else if (date.Month >= 7 && date.Month <= 9) { return "Q3"; } else if (date.Month >= 10 && date.Month <= 12) { return "Q4"; } } return value; } public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) { throw new NotImplementedException(); } }
Behavior:
class TimelineDemoBehavior:Behavior<MainWindow> { protected override void OnAttached() { base.OnAttached(); this.AssociatedObject.Loaded += new System.Windows.RoutedEventHandler(AssociatedObject_Loaded); } void AssociatedObject_Loaded(object sender, System.Windows.RoutedEventArgs e) { DataCollection collection = new DataCollection(); this.AssociatedObject.timelineControl.HoldUpdate = true; this.AssociatedObject.timelineControl.PrimaryAxis.DateTimeInterval = new TimeSpan(268, 0, 0, 0); this.AssociatedObject.timelineControl.DataSource = collection.datalist; this.AssociatedObject.timelineControl.BindingPathX = "TimeStamp"; this.AssociatedObject.timelineControl.BindingPathsY = new string[] { "High", "Low" }; this.AssociatedObject.timelineControl.HoldUpdate = false; this.AssociatedObject.timelineControl.EndInit(); this.AssociatedObject.DataContext = collection.datalist; this.AssociatedObject.area.MouseMove += new System.Windows.Input.MouseEventHandler(area_MouseMove); this.AssociatedObject.area.MouseEnter += new System.Windows.Input.MouseEventHandler(area_MouseEnter); this.AssociatedObject.area.MouseLeave += new System.Windows.Input.MouseEventHandler(area_MouseLeave); } void area_MouseLeave(object sender, System.Windows.Input.MouseEventArgs e) { this.AssociatedObject.hCircle.Visibility = System.Windows.Visibility.Collapsed; } void area_MouseEnter(object sender, System.Windows.Input.MouseEventArgs e) { this.AssociatedObject.hCircle.Visibility = System.Windows.Visibility.Visible; } void area_MouseMove(object sender, System.Windows.Input.MouseEventArgs e) { ChartArea area=sender as ChartArea; if (this.AssociatedObject.series1.Data != null) { IChartDataPoint data = null; double xValue= Math.Round(area.PointToValue(area.PrimaryAxis, e.GetPosition(area))); for (int i = 0; i < this.AssociatedObject.series1.Data.Count; i++) { if (this.AssociatedObject.series1.Data[i].X ==xValue) { data = this.AssociatedObject.series1.Data[i]; break; } } TimeLineControlSample.TimeLineData tld = (TimeLineControlSample.TimeLineData)data.Item; this.AssociatedObject.date.Text = tld.TimeStamp.ToString("MMM d, yyyy"); this.AssociatedObject.vol.Text = tld.High.ToString(); double yH = area.ValueToPoint(area.SecondaryAxis, tld.High); double yE = e.GetPosition(area).Y; var ep = e.GetPosition(this.AssociatedObject.canvas); this.AssociatedObject.hCircle.SetValue(Canvas.LeftProperty, ep.X); this.AssociatedObject.hCircle.SetValue(Canvas.TopProperty , ep.Y +(yH -yE )-2); } } }
MainWindow
<layout:SampleLayoutWindow x:Class="TimeLineControlSample.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:sync="http://schemas.syncfusion.com/wpf" Style="{StaticResource SampleLayoutWindowStyle}" xmlns:layout="clr-namespace:Syncfusion.Windows.SampleLayout;assembly=Syncfusion.Chart.Wpf.SampleLayout" xmlns:local="clr-namespace:TimeLineControlSample" xmlns:inter="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" Title="TimeLine Control Demo" UserOptionsVisibility="Collapsed" TitleBarBackground="Transparent" > <inter:Interaction.Behaviors> <local:TimelineDemoBehavior/> </inter:Interaction.Behaviors> <layout:SampleLayoutWindow.Background> <RadialGradientBrush RadiusX="0.558795" RadiusY="0.805194" Center="0.499999,0.5" GradientOrigin="0.499999,0.5"> <RadialGradientBrush.RelativeTransform> <TransformGroup/> </RadialGradientBrush.RelativeTransform> <GradientStop Color="#FF226285" Offset="0"/> <GradientStop Color="#FF060B2A" Offset="1"/> </RadialGradientBrush> </layout:SampleLayoutWindow.Background> <layout:SampleLayoutWindow.Resources> <ResourceDictionary> <DataTemplate x:Key="ScrollThumbTemplateKey" > <Grid> <Button Height="12" Margin="0,1,-2,1" Opacity="0.8" > <Button.Template> <ControlTemplate TargetType="{x:Type Button}"> <Rectangle Fill="#FFC7EAE9" StrokeThickness="0" x:Name="path" Stretch="Fill" Width="{Binding Path=SelectedRegionWidth, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type sync:TimeLineControl}}}" /> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="path" Property="Opacity" Value="0.75"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> </Button.Template> </Button> </Grid> </DataTemplate> <local:LabelConverter x:Key="LabelConverterKey" /> <DataTemplate x:Key="verticalline"> <Canvas> <Line X1="{Binding OffsetX}" Y1="0" X2="{Binding OffsetX}" Y2="1000" Stroke="White" /> </Canvas> </DataTemplate> <DataTemplate x:Key="label"> <TextBlock Text="{Binding Content}" Foreground="Red"/> </DataTemplate> </ResourceDictionary> </layout:SampleLayoutWindow.Resources> <layout:SampleLayoutWindow.ControlLayout> <Grid Margin="50,30,50,50"> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="0.75*" /> <RowDefinition Height="0.25*" /> </Grid.RowDefinitions> <StackPanel Grid.Row="0" Orientation="Horizontal"> <Grid HorizontalAlignment="Left" Height="40" Width="180" Grid.Column="0" > <Rectangle Stretch="Fill" Fill="#FF68C7DD" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Opacity="0.4"/> <TextBlock Text="Stock Price Chart" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="White" FontSize="20" FontFamily="Segoe UI" FontWeight="Regular" /> </Grid> <Grid Grid.Row="0" Grid.Column="1" HorizontalAlignment="Left"> <Grid.ColumnDefinitions> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="100"/> <ColumnDefinition Width="auto"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <TextBlock x:Name="Date" Text="Date:" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="White" FontSize="15" FontFamily="Segoe UI" FontWeight="Regular" ></TextBlock> <TextBlock x:Name="date" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="White" FontSize="15" FontFamily="Segoe UI" FontWeight="Regular" Grid.Column="1" ></TextBlock> <TextBlock x:Name="volume" Text="Volume:" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="White" FontSize="15" FontFamily="Segoe UI" FontWeight="Regular" Margin="30,0,0,0" Grid.Column="2"></TextBlock> <TextBlock x:Name="vol" HorizontalAlignment="Left" VerticalAlignment="Center" Foreground="White" FontSize="15" FontFamily="Segoe UI" FontWeight="Regular" Grid.Column="3"></TextBlock> </Grid> </StackPanel> <Canvas Name="canvas" Grid.Row="1" Background="Transparent"> <Ellipse Fill="Red" Name="hCircle" Width="5" Height="5" Visibility="Collapsed" ></Ellipse> </Canvas> <sync:Chart Grid.Row="1"> <sync:ChartArea x:Name="area" Margin="-7,0,0,0" > <sync:ChartArea.PrimaryAxis> <sync:ChartAxis LabelForeground="#FFAAD8D6" InteractiveCursorContentVisibility="false" ValueType="DateTime" LabelDateTimeFormat="MMM/dd/yyy" RangePadding="None" EdgeLabelsDrawingMode="Shift" IsInversed="True" TickSize="0" SmallTickSize="0"> <sync:ChartAxis.Header> <TextBlock Text="Date" FontFamily="Segoe UI" FontSize="12" Foreground="#FFAAD8D6"/> </sync:ChartAxis.Header> </sync:ChartAxis> </sync:ChartArea.PrimaryAxis> <sync:ChartArea.SecondaryAxis> <sync:ChartAxis LabelForeground="#FFAAD8D6" InteractiveCursorContentVisibility="false" OpposedPosition="True" IsAutoSetRange="False" Range="0,800" Interval="100" TickSize="0" SmallTickSize="0"> <sync:ChartAxis.Header> <TextBlock Text="Price in Dollars(USD)" FontFamily="Segoe UI" FontSize="12" Foreground="#FFAAD8D6"/> </sync:ChartAxis.Header> </sync:ChartAxis> </sync:ChartArea.SecondaryAxis> <sync:ChartSeries x:Name="series1" ShowToolTip="False" DataSource="{Binding ElementName=timelineControl, Path=SelectedData, Mode=TwoWay, UpdateSourceTrigger=Explicit}" BindingPathX="TimeStamp" BindingPathsY="High" Type="Spline" > </sync:ChartSeries> <!--<sync:ChartSeries x:Name="series3" ShowToolTip="False" DataSource="{Binding ElementName=timelineControl, Path=SelectedData, Mode=TwoWay, UpdateSourceTrigger=Explicit}" BindingPathX="TimeStamp" BindingPathsY="Last" Type="Spline" > </sync:ChartSeries> <sync:ChartSeries x:Name="series2" ShowToolTip="False" DataSource="{Binding ElementName=timelineControl, Path=SelectedData, Mode=TwoWay, UpdateSourceTrigger=Explicit}" BindingPathX="TimeStamp" BindingPathsY="Low" Type="Spline" > </sync:ChartSeries>--> </sync:ChartArea> </sync:Chart> <Border Grid.Row="2" BorderBrush="#FF4A9BC6" BorderThickness="1" Margin="0,0,33,0"> <sync:TimeLineControl x:Name="timelineControl" BorderBrush="#FFAAD8D6" StartValue="0" EndValue="85" IsContextMenuEnabled="True" TimeLineInterior="#FF70CAD0" TimeLineThickness="2" UnSelectedRegionInterior="Transparent" ViewLineInterior="#FFC7EAE9" ScrollBarInterior="Transparent" ScrollThumbTemplate="{DynamicResource ScrollThumbTemplateKey}" ScrollBarBorderBrush="#FF4A9BC6" > <sync:TimeLineControl.ViewPortInterior> <SolidColorBrush Color="#FF68C7DD" Opacity="0.4"/> </sync:TimeLineControl.ViewPortInterior> <sync:TimeLineControl.MouseOverInterior> <SolidColorBrush Color="#FF68C7DD" Opacity="0.4"/> </sync:TimeLineControl.MouseOverInterior> <sync:TimeLineControl.LeftIndicatorTemplate> <DataTemplate> <Rectangle Fill="#FFC7EAE9" Stretch="Fill" Height="20" Width="5" Margin="-2.5,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Center"/> </DataTemplate> </sync:TimeLineControl.LeftIndicatorTemplate> <sync:TimeLineControl.RightIndicatorTemplate> <DataTemplate> <Rectangle Fill="#FFC7EAE9" Stretch="Fill" Height="20" Width="5" Margin="-2.5,0,0,-10" VerticalAlignment="Center" HorizontalAlignment="Center"/> </DataTemplate> </sync:TimeLineControl.RightIndicatorTemplate> <sync:TimeLineControl.ScrollBarSmallIncreaseTemplate> <ControlTemplate TargetType="{x:Type RepeatButton}"> <Grid> <TextBlock FontFamily="Wingdings 3" Text="}" FontSize="12" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="#FFAAD8D6" Background="Transparent" /> </Grid> </ControlTemplate> </sync:TimeLineControl.ScrollBarSmallIncreaseTemplate> <sync:TimeLineControl.ScrollBarSmallDecreaseTemplate> <ControlTemplate TargetType="{x:Type RepeatButton}"> <Grid> <TextBlock FontFamily="Wingdings 3" Text="|" FontSize="12" VerticalAlignment="Center" HorizontalAlignment="Center" Foreground="#FFAAD8D6" Background="Transparent" /> </Grid> </ControlTemplate> </sync:TimeLineControl.ScrollBarSmallDecreaseTemplate> <sync:TimeLineControl.GridBackground> <LinearGradientBrush StartPoint="0.5,0.939745" EndPoint="0.5,0.146812" Opacity="0.4"> <GradientStop Color="#007BCEC1" Offset="0"/> <GradientStop Color="#FF6BC7DD" Offset="1"/> </LinearGradientBrush> </sync:TimeLineControl.GridBackground> <sync:TimeLineControl.PrimaryAxis> <sync:ChartAxis x:Name="primary" TickSize="0" SmallTickSize="0" RangePadding="None" EdgeLabelsDrawingMode="Fit" IntersectAction="Hide" ValueType="DateTime" LabelDateTimeFormat="yyyy" Interval="1" LabelPosition="Outside" LabelForeground="#FFD8F0F0" OpposedPosition="True"> <sync:ChartArea.ShowGridLines>False</sync:ChartArea.ShowGridLines> <sync:ChartArea.ShowMajorGridLines>True</sync:ChartArea.ShowMajorGridLines> <sync:ChartArea.OriginLineStroke> <Pen Brush="#FF4A9BC6" Thickness="1"/> </sync:ChartArea.OriginLineStroke> <sync:ChartAxis.LineStroke> <Pen Brush="#FF4A9BC6" Thickness="1"/> </sync:ChartAxis.LineStroke> </sync:ChartAxis> </sync:TimeLineControl.PrimaryAxis> <sync:TimeLineControl.Axes> <sync:ChartAxis x:Name="quater" TickSize="0" SmallTickSize="0" LabelForeground="White" ValueType="DateTime" Interval="63" IsAutoSetRange="False" Range="0,1250"> <sync:ChartArea.GridLineStroke> <Pen Brush="#FF4A9BC6" Thickness="1"/> </sync:ChartArea.GridLineStroke> <sync:ChartArea.ShowGridLines>True</sync:ChartArea.ShowGridLines> <sync:ChartArea.ShowMajorGridLines>True</sync:ChartArea.ShowMajorGridLines> <sync:ChartArea.OriginLineStroke> <Pen Brush="#FF4A9BC6" Thickness="1"/> </sync:ChartArea.OriginLineStroke> <sync:ChartAxis.LineStroke> <Pen Brush="#FF4A9BC6" Thickness="1"/> </sync:ChartAxis.LineStroke> <sync:ChartAxis.LabelTemplate> <DataTemplate> <TextBlock Text="{Binding Converter={StaticResource LabelConverterKey}}" Margin="50,0,0,0" Foreground="#FFD8F0F0"/> </DataTemplate> </sync:ChartAxis.LabelTemplate> </sync:ChartAxis> </sync:TimeLineControl.Axes> </sync:TimeLineControl> </Border> </Grid> </layout:SampleLayoutWindow.ControlLayout> </layout:SampleLayoutWindow>
App style:
<Application x:Class="TimeLineControlSample.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:syncfusion="http://schemas.syncfusion.com/wpf" xmlns:local="clr-namespace:Syncfusion.Windows.SampleLayout;assembly=Syncfusion.Chart.Wpf.SampleLayout" StartupUri="View/MainWindow.xaml"> <Application.Resources> <SolidColorBrush x:Key="MetroPathBrush" Color="#FF7F7F7F"/> <SolidColorBrush x:Key="MetroTitleBarBackground" Color="#FF1BA1E2"/> <SolidColorBrush x:Key="MetroTitleBarForeground" Color="White"/> <LinearGradientBrush x:Key="ResizeGripperForeground" EndPoint="1,0.75" StartPoint="0,0.25"> <GradientStop Color="#FFFFFF" Offset="0.3"/> <GradientStop Color="#BBC5D7" Offset="0.75"/> <GradientStop Color="#6D83A9" Offset="1"/> </LinearGradientBrush> <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/> <syncfusion:CornerRadiusConverter x:Key="CRConvert"/> <Style TargetType="{x:Type syncfusion:TitleBar}"> <Setter Property="Focusable" Value="False"/> </Style> <Style TargetType="{x:Type syncfusion:TitleButton}"> <Setter Property="Focusable" Value="False"/> </Style> <Style x:Key="ResizeStyle" TargetType="{x:Type syncfusion:ResizeGripStyle}"> <Setter Property="HorizontalAlignment" Value="Right"/> <Setter Property="VerticalAlignment" Value="Bottom"/> <Setter Property="Visibility" Value="Collapsed"/> <Setter Property="IsTabStop" Value="false"/> <Setter Property="Cursor" Value="SizeNWSE"/> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type syncfusion:ResizeGripStyle}"> <Grid> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition/> <ColumnDefinition/> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition/> <RowDefinition/> <RowDefinition/> </Grid.RowDefinitions> <Grid Height="3" Width="1" Grid.Column="2" Grid.Row="0" Margin="2,1,1,1" > <Rectangle Fill="#FF939598"/> <Rectangle Fill="#FF939598" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="90"/> <TranslateTransform/> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> </Grid> <Grid Height="3" Width="1" Grid.Column="1" Grid.Row="1" Margin="2,1,1,1" > <Rectangle Fill="#FF939598"/> <Rectangle Fill="#FF939598" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="90"/> <TranslateTransform/> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> </Grid> <Grid Height="3" Width="1" Grid.Column="2" Grid.Row="1" Margin="2,1,1,1" > <Rectangle Fill="#FF939598"/> <Rectangle Fill="#FF939598" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="90"/> <TranslateTransform/> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> </Grid> <Grid Height="3" Width="1" Grid.Column="0" Grid.Row="2" Margin="1" > <Rectangle Fill="#FF939598"/> <Rectangle Fill="#FF939598" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="90"/> <TranslateTransform/> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> </Grid> <Grid Height="3" Width="1" Grid.Column="1" Grid.Row="2" Margin="2,1,1,1" > <Rectangle Fill="#FF939598"/> <Rectangle Fill="#FF939598" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="90"/> <TranslateTransform/> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> </Grid> <Grid Height="3" Width="1" Grid.Column="2" Grid.Row="2" Margin="2,1,1,1" > <Rectangle Fill="#FF939598"/> <Rectangle Fill="#FF939598" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="90"/> <TranslateTransform/> </TransformGroup> </Rectangle.RenderTransform> </Rectangle> </Grid> </Grid> <!--<Grid Background="Transparent" SnapsToDevicePixels="true"> <Path Data="M 9,0 L 11,0 L 11,11 L 0,11 L 0,9 L 3,9 L 3,6 L 6,6 L 6,3 L 9,3 z" HorizontalAlignment="Right" VerticalAlignment="Bottom" > <Path.Fill> <DrawingBrush TileMode="Tile" Viewbox="0,0,3,3" Viewport="0,0,3,3" ViewportUnits="Absolute" ViewboxUnits="Absolute"> <DrawingBrush.Drawing> <DrawingGroup> <GeometryDrawing Brush="{StaticResource ResizeGripperForeground}" Geometry="M 0,0 L 2,0 L 2,2 L 0,2 z "/> </DrawingGroup> </DrawingBrush.Drawing> </DrawingBrush> </Path.Fill> </Path> </Grid>--> </ControlTemplate> </Setter.Value> </Setter> </Style> <ControlTemplate x:Key="SkinTemp" TargetType="{x:Type local:SampleLayoutWindow}"> <AdornerDecorator> <Border Name="OuterBorder" CornerRadius="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:SampleLayoutWindow}}, Path=CornerRadius}" Background="{TemplateBinding Background}" BorderThickness="{TemplateBinding ResizeBorderThickness}" BorderBrush="White" Margin="{TemplateBinding Margin}"> <!--<Border.Effect> <DropShadowEffect BlurRadius="30" Direction="302" ShadowDepth="0" Color="Black"/> </Border.Effect>--> <Border Name="InnerBorder"> <Grid x:Name="RootGrid"> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition Height="*"/> </Grid.RowDefinitions> <Border Grid.RowSpan="2" Background="{TemplateBinding Background}" CornerRadius="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:SampleLayoutWindow}}, Path=CornerRadius}"> <Border.Effect> <DropShadowEffect BlurRadius="30" Direction="302" ShadowDepth="0" Color="Black"/> </Border.Effect> </Border> <Border Name="ContentAreaBorder" Grid.Row="1" > <Grid x:Name="ChildGrid"> <Grid.RowDefinitions> <RowDefinition Height="*"/> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <syncfusion:ResizeGripStyle x:Name="PART_Resizegrip" Style="{TemplateBinding ResizeGripStyle}" HorizontalAlignment="right" VerticalAlignment="Bottom" Visibility="Collapsed" IsTabStop="False" Cursor="SizeNWSE" Margin="0,0,3,3" /> <ContentPresenter Name="contentpresenter" ></ContentPresenter> </Grid> </Border> <syncfusion:TitleBar Grid.Row="0" Template="{TemplateBinding TitleBarTemplate}" Foreground="{TemplateBinding Foreground}" Background="{TemplateBinding TitleBarBackground}" Name="PART_TitleBar" Focusable="False" Height="60" > <Grid> <Path Stretch="Fill" StrokeThickness="1.33333" StrokeMiterLimit="2.75" Stroke="#FF194B7A" Data="F1 M 124.623,343.223L 109.916,343.223L -412.585,343.223L -412.585,414.374L 124.623,414.374L 181.149,343.223L 124.623,343.223 Z " Height="70" Width="500" HorizontalAlignment="Left" VerticalAlignment="Top" > <Path.Fill> <LinearGradientBrush StartPoint="0.499999,0.248289" EndPoint="0.499999,0.950002"> <GradientStop Color="#FF226088" Offset="0"/> <GradientStop Color="#FF194F70" Offset="0.485207"/> <GradientStop Color="#FF113F59" Offset="1"/> </LinearGradientBrush> </Path.Fill> </Path> <TextBlock Text="{TemplateBinding Title}" Foreground="{TemplateBinding TitleBarForeground}" HorizontalAlignment="Left" VerticalAlignment="Center" FontFamily="Segoe UI" FontWeight="Light" FontSize="30" Margin="20,0,0,0"/> <StackPanel x:Name="MinMaxCloseStackPanel" Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Top" > <syncfusion:TitleButton Command="syncfusion:ChromelessWindow.ToggleMinimizedState" x:Name="MinimizeButton" Template="{TemplateBinding MinimizeButtonTemplate}" /> <syncfusion:TitleButton Command="syncfusion:ChromelessWindow.ToggleMaximizedState" Visibility="Collapsed" x:Name="PART_MaximizeButton" Template="{TemplateBinding MaximizeButtonTemplate}" Margin="0,0,4,0" /> <syncfusion:TitleButton Command="syncfusion:ChromelessWindow.ToggleMaximizedState" Visibility="Collapsed" x:Name="PART_RestoreButton" Template="{TemplateBinding RestoreButtonTemplate}" Margin="0,-2,5,0" /> <syncfusion:TitleButton Command="syncfusion:ChromelessWindow.CloseWindow" x:Name="CloseButton" Template="{TemplateBinding CloseButtonTemplate}" VerticalAlignment="Stretch" HorizontalAlignment="Right"/> </StackPanel> </Grid> </syncfusion:TitleBar> </Grid> </Border> </Border> </AdornerDecorator> <ControlTemplate.Triggers> <Trigger Property="ResizeMode" Value="NoResize"> <Setter Property="Visibility" Value="Collapsed" TargetName="MinimizeButton"/> <Setter Property="Visibility" Value="Collapsed" TargetName="PART_MaximizeButton"/> <Setter Property="Visibility" Value="Collapsed" TargetName="PART_RestoreButton"/> <Setter Property="ResizeBorderThickness" Value="1"/> </Trigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="ResizeMode" Value="CanResizeWithGrip"/> <Condition Property="WindowState" Value="Normal"/> </MultiTrigger.Conditions> <Setter Property="Visibility" Value="Visible" TargetName="PART_Resizegrip"/> </MultiTrigger> <Trigger Property="WindowState" Value="Maximized"> <Setter Property="Margin" Value="0" TargetName="OuterBorder"/> </Trigger> <Trigger Property="IsActive" Value="False"> <Setter Property="Effect" TargetName="OuterBorder"> <Setter.Value> <DropShadowEffect BlurRadius="20" Direction="320" ShadowDepth="0" Color="Black" Opacity="0.8"/> </Setter.Value> </Setter> </Trigger> <MultiTrigger> <MultiTrigger.Conditions> <Condition Property="ResizeMode" Value="NoResize"/> <Condition Property="WindowState" Value="Maximized"/> </MultiTrigger.Conditions> <Setter Property="Visibility" Value="Collapsed" TargetName="MinimizeButton"/> <Setter Property="Visibility" Value="Collapsed" TargetName="PART_MaximizeButton"/> <Setter Property="Visibility" Value="Collapsed" TargetName="PART_RestoreButton"/> <Setter Property="Margin" Value="0" TargetName="OuterBorder"/> </MultiTrigger> </ControlTemplate.Triggers> </ControlTemplate> <ControlTemplate x:Key="MinimizeBlue" TargetType="{x:Type Button}" > <Border Name="minborder" BorderThickness="1" CornerRadius="0" Background="Transparent" Margin="3" SnapsToDevicePixels="True"> <Path x:Name="minpath" Data="M0.5,0.5 L8.5,0.5 L8.5,2.5 L0.5,2.5 z" Fill="#FFB8B6B7" HorizontalAlignment="Center" VerticalAlignment="Center" Height="3" Margin="5" Stretch="Fill" Stroke="{StaticResource MetroPathBrush}" Width="13" SnapsToDevicePixels="True"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter TargetName="minpath" Property="Fill" Value="#FFFFFFFF"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <ControlTemplate x:Key="MaximizeBlue" TargetType="{x:Type Button}"> <Border x:Name="maxborder" BorderThickness="0" BorderBrush="Transparent" Margin="0 3 3 3"> <Border Width="10" Height="10" x:Name="pathButton" Background="#FF353535" BorderThickness="1 3 1 1" BorderBrush="#FFB8B6B7"/> </Border> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter TargetName="pathButton" Property="BorderBrush" Value="White"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <ControlTemplate x:Key="RestoreBlue" TargetType="{x:Type Button}"> <Grid x:Name="minButton" Margin="0 3 3 3"> <Rectangle x:Name="path1" Stroke="#FFB8B6B7" StrokeThickness="1" Fill="#FF353535" Width="9" Height="9"/> <Rectangle x:Name="path2" Stroke="#FFB8B6B7" StrokeThickness="2" Fill="#FF353535" Width="9" Height="9" Margin="0 5 5 0"/> </Grid> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="true"> <Setter TargetName="path1" Property="Stroke" Value="White"/> <Setter TargetName="path2" Property="Stroke" Value="White"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <ControlTemplate x:Key="CloseBlue" TargetType="{x:Type Button}"> <Border Cursor="Arrow" Background="Transparent" > <Grid Height="35" Width="35"> <Path x:Name="path" HorizontalAlignment="Stretch" Opacity="0.3" VerticalAlignment="Stretch" Stretch="Fill" Fill="White" Data="F1 M 259.89,264.302L 259.89,346.681C 305.385,346.681 342.269,309.797 342.269,264.302L 259.89,264.302L 259.89,264.302 Z " RenderTransformOrigin="0.5,0.5"> <Path.RenderTransform> <TransformGroup> <ScaleTransform/> <SkewTransform/> <RotateTransform Angle="90"/> <TranslateTransform/> </TransformGroup> </Path.RenderTransform> </Path> <Grid Height="10" Width="2" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="0,10,10,0"> <Rectangle x:Name="rect1" SnapsToDevicePixels="True" Fill="White" StrokeThickness="0" RenderTransformOrigin="0.5,0.5" > <Rectangle.RenderTransform> <RotateTransform Angle ="-45"/> </Rectangle.RenderTransform> </Rectangle> <Rectangle x:Name="rect2" SnapsToDevicePixels="True" Fill="White" StrokeThickness="0" RenderTransformOrigin="0.5,0.5"> <Rectangle.RenderTransform> <RotateTransform Angle ="45"/> </Rectangle.RenderTransform> </Rectangle> </Grid> </Grid> </Border> <ControlTemplate.Triggers> <Trigger Property="IsMouseOver" Value="True"> <Setter TargetName="path" Property="Opacity" Value="0.5"/> </Trigger> </ControlTemplate.Triggers> </ControlTemplate> <ControlTemplate x:Key="IconDialogclose" TargetType="{x:Type Button}"> <Border Width="0" Height="0" Cursor="Arrow" Background="Transparent" > </Border> </ControlTemplate> <ControlTemplate x:Key="Office2010BlueTitleBarTemplate" TargetType="{x:Type syncfusion:TitleBar}"> <Border Name="border" Height="60" CornerRadius="0" Background="Transparent" > <Border BorderBrush="{DynamicResource MetroBorderBrush}" Background="{TemplateBinding Background}" BorderThickness="0" Width="Auto" CornerRadius="0"> <ContentPresenter VerticalAlignment="Bottom" Margin="0,0,0,0"/> </Border> </Border> </ControlTemplate> <Style TargetType="{x:Type local:SampleLayoutWindow}" x:Key="SampleLayoutWindowStyle"> <Setter Property="Height" Value="720" /> <Setter Property="Width" Value="1024" /> <Setter Property="ResizeMode" Value="NoResize"/> <Setter Property="ResizeGripStyle" Value="{StaticResource ResizeStyle}"/> <Setter Property="WindowStyle" Value="None" /> <Setter Property="ResizeBorderThickness" Value="2" /> <Setter Property="SnapsToDevicePixels" Value="True"/> <Setter Property="CornerRadius" Value="0"/> <Setter Property="FontFamily" Value="Segoe UI"/> <Setter Property="FontSize" Value="14"/> <Setter Property="FontWeight" Value="Regular"/> <Setter Property="MinWidth" Value="300"/> <Setter Property="MinHeight" Value="120"/> <Setter Property="Margin" Value="25"/> <Setter Property="TitleBarBackground" Value="{StaticResource MetroTitleBarBackground}"/> <Setter Property="TitleBarForeground" Value="{StaticResource MetroTitleBarForeground}"/> <Setter Property="Background" Value="White"/> <Setter Property="BorderThickness" Value="0.5"/> <Setter Property="ResizeBorderBrush" Value="{DynamicResource MetroBorderBrush}"/> <Setter Property="Foreground" Value="{DynamicResource MetroForegroundBrush}"/> <Setter Property="MinimizeButtonTemplate" Value="{StaticResource MinimizeBlue}"/> <Setter Property="MaximizeButtonTemplate" Value="{StaticResource MaximizeBlue}"/> <Setter Property="RestoreButtonTemplate" Value="{StaticResource RestoreBlue}"/> <Setter Property="CloseButtonTemplate" Value="{StaticResource CloseBlue}"/> <Setter Property="TitleBarTemplate" Value="{StaticResource Office2010BlueTitleBarTemplate}"/> <Setter Property="Template" Value="{StaticResource SkinTemp}"/> <Setter Property="Icon" Value="/syncfusion.Chart.Wpf.SampleLayout;component/App.ico" /> <Setter Property="ContentTemplate"> <Setter.Value> <DataTemplate> <Grid> <Grid.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <ResourceDictionary Source="/syncfusion.Chart.Wpf.SampleLayout;component/Themes/ControlStyles.xaml" /> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Grid.Resources> <Grid.ColumnDefinitions> <ColumnDefinition/> <ColumnDefinition Width="auto" /> <ColumnDefinition Width="auto" /> </Grid.ColumnDefinitions> <ContentPresenter Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:SampleLayoutWindow}}, Path=ControlLayout}" /> <Line Width="10" X1="0" Y1="0" X2="0" Y2="100" Stroke="#FFD3D3D3" Stretch="Fill" Margin="0,40,0,40" RenderOptions.EdgeMode="Aliased" StrokeThickness="1" Grid.Column="1" VerticalAlignment="Stretch" HorizontalAlignment="Center" Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:SampleLayoutWindow}},Path= UserOptionsVisibility}" /> <ScrollViewer Width="300" Grid.Column="2" Margin="0,40,0,40" HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Visibility="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:SampleLayoutWindow}},Path= UserOptionsVisibility}" > <ContentPresenter Content="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:SampleLayoutWindow}}, Path=UserOptionsLayout}" /> </ScrollViewer> </Grid> </DataTemplate> </Setter.Value> </Setter> </Style> </Application.Resources> </Application>