Hi,
I have problem with Major and MinorTickLinesStyle on axis. The same code produces different results in version 7.x and 8.x. Can you please take a look and let me know what was changed between versions.
Thanks in advance.
Kind regards,
Boštjan
- Boštjan Arzenšek asked 3 weeks ago
-
Hi Boštjan, Thanks for your inquiry. Unfortunately, it’s not enough information to determine the exact cause of the described issue. Could you please provide us with a code sample that can reproduce the mentioned behavior for investigation on our side? Thanks in advance, Lex S., MSEE, SciChart Technical Support Engineer
- You must login to post comments
Hi,
please see the attached code snippet. The style is the same, just the version is different.
- Boštjan Arzenšek answered 2 weeks ago
- You must login to post comments
Hi again,
My goal is to change styles of Major and Minor ticks without re-rendering. I have tried this code where I change the style which are predefined and it only works for minor ticks (thickness is still not working) and not for major ticks.
The code snippets:
The styles:
<Style x:Key="MajorThickLineStyle" TargetType="Line">
<Setter Property="Stroke" Value="Blue"/>
<Setter Property="StrokeThickness" Value="20" />
<Setter Property="Y2" Value="20" />
<Style x:Key="MajorThinLineStyle" TargetType="Line">
<Setter Property="Stroke" Value="Red"/>
<Setter Property="StrokeThickness" Value="5" />
<Setter Property="Y2" Value="40" />
<Style x:Key="MinorThickLineStyle" TargetType="Line">
<Setter Property="Stroke" Value="Green"/>
<Setter Property="StrokeThickness" Value="2" />
<Setter Property="Y2" Value="50" />
<Style x:Key="MinorThinLineStyle" TargetType="Line">
<Setter Property="Stroke" Value="Yellow"/>
<Setter Property="StrokeThickness" Value="1" />
<Setter Property="Y2" Value="20" />
The xaml part:
<apdf:ViewUserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="/XRDviewCommon.Wpf;component/SciChart/Styles/LineChartStyles.xaml"/>
<ResourceDictionary Source="/XRDviewCommon.Wpf;component/SciChart/Styles/LineChartAxesStyles.xaml"/>
<ResourceDictionary Source="/XRDviewCommon.Wpf;component/Resources/PathGeomtries.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
<!-- ReSharper disable once Xaml.RedundantResource -->
<Style x:Key="{x:Static presenters:MultiLineChartPresenterService.XAxisStyleKey}" TargetType="{x:Type s:NumericAxis}" BasedOn="{StaticResource DefaultXAxisStyle}">
<Setter Property="local:MultiLineChartView.GridStrokeThickness"
Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:MultiLineChartView}}, Path=DataContext.GridStrokeThickness}" />
</Style>
<!-- ReSharper disable once Xaml.RedundantResource -->
<Style x:Key="{x:Static presenters:MultiLineChartPresenterService.YAxisStyleKey}" TargetType="{x:Type s:NumericAxis}" BasedOn="{StaticResource DefaultYAxisStyle}">
<Setter Property="local:MultiLineChartView.GridStrokeThickness"
Value="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type local:MultiLineChartView}}, Path=DataContext.GridStrokeThickness}" />
</Style>
<Style x:Key="MultiLineChartSurfaceStyle"
BasedOn="{StaticResource DefaultLineChartSurfaceStyle}"
TargetType="s:SciChartSurface">
<Setter Property="RenderSurfaceStyle" Value="{StaticResource MultiLineRenderSurfaceStyle}" />
<Setter Property="BorderThickness" Value="{Binding GridStrokeThickness}"></Setter>
</Style>
</ResourceDictionary>
<commonWpf:SciChartSurface
ViewportManager=”{Binding ViewportManager}”
RenderPriority=”Normal”
RenderableSeries=”{Binding RenderableSeries, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}”
Annotations=”{s:AnnotationsBinding Annotations}”
Style=”{StaticResource MultiLineChartSurfaceStyle}”
XAxes=”{s:AxesBinding XAxes}”
YAxes=”{s:AxesBinding YAxes}”
attachedBehaviors:SciChartExportBehavior.ExportAction=”{Binding ExportAction, Mode=TwoWay}”
attachedBehaviors:SciChartExportBehavior.ExportThumbnail=”{Binding ExportThumbnail, Mode=TwoWay}”
attachedBehaviors:MinWidthForScrollbarParentBehavior.ChartPanelMinWidth=”200″>
<behaviors:Interaction.Behaviors>
<attachedBehaviors:SciChartStyleClearBehavior/>
<attachedBehaviors:SciChartExportBehavior/>
<attachedBehaviors:MinWidthForScrollbarParentBehavior/>
</behaviors:Interaction.Behaviors>
<commonWpf:SciChartSurfaceExtended.ChartModifier>
<s:LegendModifier x:Name="LegendModifier"
LegendPlacement="{Binding LegendPlacement}"
Orientation="{Binding LegendOrientation}"
IsEnabled="True"
ShowLegend="{Binding IsLegendVisible}"
ShowVisibilityCheckboxes="False"
ShowSeriesMarkers="True"
ScrollViewer.VerticalScrollBarVisibility="Auto"
ScrollViewer.HorizontalScrollBarVisibility="Auto"
HorizontalAlignment="{Binding LegendHorizontalAlignment}"
VerticalAlignment="{Binding LegendVerticalAlignment}"
GetLegendDataFor="AllVisibleSeries"
Background="Transparent"
FontSize="{Binding LegendFontSize}">
<s:LegendModifier.LegendItemTemplate >
<DataTemplate>
<Grid Margin="0,0,0,3">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
<!--this aligns long text correctly, why??-->
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<controls:ChartLineSymbol Grid.Row="0" Grid.Column="0" DataContext="{Binding RenderableSeries}"
MarkerStyle="{Binding PointMarker.Tag, Mode=TwoWay, FallbackValue={x:Static treeModels:MarkerStyle.None}}"
StrokeDashArray="{Binding StrokeDashArray, Mode=TwoWay}"
Stroke="{Binding Stroke, Mode=TwoWay}" VerticalAlignment="Center" Margin="0,0,0,0"/>
<TextBlock Grid.Row="0" Grid.Column="1"
TextWrapping="Wrap"
MaxWidth="300"
Margin="10,0,10,0"
HorizontalAlignment="Left"
VerticalAlignment="Center"
Padding="0"
TextAlignment="Left"
Foreground="{x:Static apdf:AntonPaarBrushes.Gray102}"
FontSize="{Binding ElementName=LegendModifier, Path=FontSize}"
Text="{Binding SeriesName}" />
</Grid>
</DataTemplate>
</s:LegendModifier.LegendItemTemplate>
<!--- LegendTemplate is just needed to enable cursor to switch to Arrow (default)-->
<s:LegendModifier.LegendTemplate>
<ControlTemplate>
<s:SciChartLegend ItemTemplate="{Binding LegendItemTemplate}"
LegendData="{Binding LegendData}"
Orientation="{Binding Orientation}"
ScrollViewer.HorizontalScrollBarVisibility="{Binding Path=(ScrollViewer.HorizontalScrollBarVisibility)}"
ScrollViewer.VerticalScrollBarVisibility="{Binding Path=(ScrollViewer.VerticalScrollBarVisibility)}"
ShowSeriesMarkers="{Binding ShowSeriesMarkers}"
ShowVisibilityCheckboxes="{Binding ShowVisibilityCheckboxes}"
Background="Transparent"
BorderThickness="0"
Cursor="Arrow"/>
</ControlTemplate>
</s:LegendModifier.LegendTemplate>
</s:LegendModifier>
</s:ModifierGroup>
>
And the code behind part where the styles are changed based on the change value of “GridStrokeThickness” values
public partial class MultiLineChartView
{
public static readonly DependencyProperty GridStrokeThicknessProperty = DependencyProperty.RegisterAttached(
“GridStrokeThickness”, typeof(double), typeof(MultiLineChartView), new PropertyMetadata(default(double), GridStrokeThicknessPropertyChangedCallback));
private static void GridStrokeThicknessPropertyChangedCallback(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
if (d is NumericAxis axis && e.NewValue is double thickness)
{
var res = new ResourceDictionary()
{
Source = new Uri(
"pack://application:,,,/XRDviewCommon.Wpf;component/SciChart/Styles/LineChartAxesStyles.xaml")
};
var gridLineStyle = res["GridLineStyle"] as Style;
var style = new Style(typeof(Line), gridLineStyle);
style.Setters.Add(new Setter(Line.StrokeThicknessProperty, thickness));
//axis.MajorGridLineStyle = style;
axis.MinorGridLineStyle = style;
if (thickness > 3)
{
axis.MajorTickLineStyle = res["MajorThickLineStyle"] as Style;
axis.MinorTickLineStyle = res["MinorThickLineStyle"] as Style;
}
else
{
axis.MajorTickLineStyle = res["MajorThinLineStyle"] as Style;
axis.MinorTickLineStyle = res["MinorThinLineStyle"] as Style;
}
}
}
public static void SetGridStrokeThickness(DependencyObject element, double value)
{
element.SetValue(GridStrokeThicknessProperty, value);
}
public static double GetGridStrokeThickness(DependencyObject element)
{
return (double)element.GetValue(GridStrokeThicknessProperty);
}
public MultiLineChartView()
{
InitializeComponent();
EffectManager.EnableDropShadows = false;
}
}
- Boštjan Arzenšek answered 3 days ago
- last edited 3 days ago
- You must login to post comments
Please login first to submit.