まだウェブ上で答えを見つけることができていませんが、これが簡単な質問であることを願っています。
Silverlight Toolkitのラインシリーズの2010年4月リリースを使用しており、DateTimeAxisまたはLinearAxisに(指定した)最小値と最大値のみを表示する必要があります。「表示」とは、軸の両端に実際の「目盛り」とそれに関連する値を表示することを意味します。
これは可能ですか?
ありがとう!
まだウェブ上で答えを見つけることができていませんが、これが簡単な質問であることを願っています。
Silverlight Toolkitのラインシリーズの2010年4月リリースを使用しており、DateTimeAxisまたはLinearAxisに(指定した)最小値と最大値のみを表示する必要があります。「表示」とは、軸の両端に実際の「目盛り」とそれに関連する値を表示することを意味します。
これは可能ですか?
ありがとう!
私のブログであなたの Q に返信しました:
「やあビクター、これを行うように設計されていないため、組み込みの軸ではこれを達成できないと思います。ただし、この例で行っているように、チャートの x 軸をスタイリングすることでこれを実現できる可能性があります。チャートの両端の外側に 2 つのテキストブロックを下に配置することで、独自の疑似軸を作成できます。適切なフォーマットを取得するには時間がかかる場合がありますが、簡単な回避策であるため、LINQ を使用して最小値と最大値を取得できます。データがロードされ、これらの値にバインドされます。」
ここで、軸のスタイリングの例を含むコードを取得します。
はい、できます。最小値と最大値を設定し、間隔を最小値と最大値の差として設定します。
すなわち:
<toolkit:LinearAxis Minimum="0" Orientation="X" Maximum="105" Interval="105"/>
更新: (DateTimeAxis の場合)
DateTimeAxis を修正するのは少し難しいです。IValueConverter による私のソリューションは次のとおりです。
public class AxisFormatter : IValueConverter
{
public Object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
if (DateTime.Parse(value.ToString()) != maxDate && DateTime.Parse(value.ToString() != minDate)
return null;
else
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
}
ここで、minDate と maxDate は、軸の上限と下限のハードコードされた値です。
また、軸の AxisLabelStyle を介してこのコンバーターを実装する必要があります。したがって、Styles.xaml またはスタイルを保存する場所に、次のスタイルを配置します。
<Style x:Key="DateTimeAxisLabelStyle1" TargetType="charting:DateTimeAxisLabel">
<Setter Property="IsTabStop" Value="False"/>
<Setter Property="YearsIntervalStringFormat" Value="{}{0:yyyy}"/>
<Setter Property="MonthsIntervalStringFormat" Value="{}{0:d}"/>
<Setter Property="WeeksIntervalStringFormat" Value="{}{0:d}"/>
<Setter Property="DaysIntervalStringFormat" Value="{}{0:d}"/>
<Setter Property="HoursIntervalStringFormat" Value="{}{0:t}"/>
<Setter Property="MinutesIntervalStringFormat" Value="{}{0:t}"/>
<Setter Property="SecondsIntervalStringFormat" Value="{}{0:T}"/>
<Setter Property="MillisecondsIntervalStringFormat" Value="{}{0:mm:ss.fff}"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="charting:DateTimeAxisLabel">
<TextBlock DataContext="{TemplateBinding FormattedContent}" Text="{Binding Converter={StaticResource axisFormatter}}"></TextBlock>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
xmlns:local="clr-namespace:YOURPROJECTNAME を XAML ファイルに追加し、local:AxisFormatter x:Key="AxisFormatter" をリソース ディクショナリに追加します。
次に、軸の実際の XAML 宣言で、以下に示すように配置します。
<toolkit:DateTimeAxis AxisLabelStyle="{StaticResource DateTimeAxisLabelStyle1}" Orientation="X" />
この解決策は複雑で申し訳ありません。さらに詳しいガイダンスが必要な場合はお知らせください。