Я пытаюсь условно отформатировать числа, которые отображаются на оси NumericAxis для LineSeries (из Silverlight 4 Toolkit). Чтобы быть более конкретным, я хочу, чтобы числа >=10000 и ‹=0,0001 отображались в экспоненциальном представлении, но я не могу заставить эту работу работать.
Я могу переопределить шаблон NumericAxisLabel следующим образом:
<Style x:Key="NumericAxisLabelStyle" TargetType="chartingToolkit:NumericAxisLabel">
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="StringFormat" Value="{}{0:0.0E+00}" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="chartingToolkit:NumericAxisLabel">
<TextBlock Text="{TemplateBinding FormattedContent}"/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Но это применит формат экспоненциальной записи ко ВСЕМ меткам на оси. Я хочу, чтобы выражение строкового формата «срабатывало» только тогда, когда возникает условие, о котором я упоминал выше.
Я смог сделать это в шаблоне всплывающей подсказки LineDataPoint довольно легко, используя привязку с пользовательским преобразователем значений, например:
<ControlTemplate TargetType="chartingToolkit:LineDataPoint">
<Grid x:Name="Root" Opacity="0">
<ToolTipService.ToolTip>
<StackPanel Margin="2,2,2,2">
<StackPanel Orientation="Horizontal">
<TextBlock Text="X:" />
<ContentControl Content="{Binding objResultValueX, Converter={StaticResource ToCustomStringFormat}}"/>
</StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="Y:" />
<ContentControl Content="{Binding dblResultValueY, Converter={StaticResource ToCustomStringFormat}}"/>
</StackPanel>
</StackPanel>
</ToolTipService.ToolTip>
...
</Grid>
</ControlTemplate>
Если бы я только мог указать преобразователь для «FormattedContent» в NumericAxisLabelStyle, как я делаю это для шаблона LineDataPoint... наверняка должен быть способ!
Любые идеи?
Заранее спасибо за помощь!