LinearAxis has an Iterval property. Try to set
<Charting:Chart.Axes>
<Charting:LinearAxis Interval="1" Orientation="Y" Minimum="0" Title="" Location="Left" />
</Charting:Chart.Axes>
According with your comment (sorry, i thinked the problem was simpler ;)), i used a similar approach to render the label on Y axis:
in resources, use a style like this
<Style x:Key="ChartLabelNoDecimal" TargetType="chartingToolkit:AxisLabel">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="chartingToolkit:AxisLabel">
<TextBlock DataContext="{TemplateBinding FormattedContent}" Text="{Binding Converter={StaticResource NumericConverter1}}" FontSize="9" />
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
public class NumericConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
double x = double.Parse(value.ToString());
if(/*check if has decimals*/) return string.Empty;
else return x;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
then you can add a LinearAxis with this style to your chart. My NumericConverter just Test the value of the label that chart want to display and format it accordingly with my logic. You can test if the value is integer, so return the correct string or empty otherwise. I think it can work.