31.01 -> 1.02 -> 3.02
の代わりにセットの例31.01 -> 2.02
。その場合、唯一の方法は、のようにカスタムを記述するAxis
ことDateTimeAxis
です。
最初に、次のファイルをプロジェクトにコピーします。
- c:\Program Files\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Source\Source code.zip\Controls.DataVisualization.Toolkit\EnumerableFunctions.cs
- c:\Program Files\Microsoft SDKs\Silverlight\v4.0\Toolkit\Apr10\Source\Source code.zip\Controls.DataVisualization.Toolkit\ValueHelper.cs
これらのファイルをまったく同じ名前空間でコピーします。これらは内部ファイルであるため、名前の競合は発生しません。次に、 の拡張クラスを追加しDateTimeIntervalType
ます。
namespace System.Windows.Controls.DataVisualization.Charting
{
/// <summary>
/// A date time interval.
/// </summary>
public enum ExtendedDateTimeIntervalType
{
/// <summary>
/// Automatically determine interval.
/// </summary>
Auto = 0,
/// <summary>
/// Interval type is milliseconds.
/// </summary>
Milliseconds = 1,
/// <summary>
/// Interval type is seconds.
/// </summary>
Seconds = 2,
/// <summary>
/// Interval type is minutes.
/// </summary>
Minutes = 3,
/// <summary>
/// Interval type is hours.
/// </summary>
Hours = 4,
/// <summary>
/// Interval type is days.
/// </summary>
Days = 5,
/// <summary>
/// Interval type is weeks.
/// </summary>
Weeks = 6,
/// <summary>
/// Interval type is months.
/// </summary>
Months = 7,
/// <summary>
/// Interval type is years.
/// </summary>
Years = 8,
/// <summary>
/// Interval type is odd days
/// </summary>
OddDays = 9
}
}
新しいメンバーをOddDays
機能させるために、クラスを変更しましたDataTimeRangeAxis
。SOのプログラマーは、長い説明のある答えなどの些細なことに注意を払わないため、これはpastebinのリンクです。
名前空間SilverlightApplication3
を必要なものに変更します( を除くSystem.Windows.Controls.DataVisualization.Charting
)。
また、コードには多くの依存関係が含まれており、余分なファイルをアプリケーションにコピーしたくなかったため、最後の関数のコードにコメントを付けました。軸はこのコードがなくても正常に動作します。おそらく、この関数はまったく使用されていません。
クラスの最も重要な部分は関数にありますIncrementDateTime
:
//The interval type forced by a user, not actual interval type
if (this.IntervalType == ExtendedDateTimeIntervalType.OddDays)
{
DateTime newDate;
if(span != TimeSpan.Zero) //automatically created interval
newDate = date.Add(span);
else newDate = date.AddDays(interval); //else use the interval which is set by a user
//find the nearest odd day
while (newDate.Day % 2 != 1)
newDate = newDate.AddDays(1);
//update span
span = newDate - date;
}
Xaml は次のようになります。
<charting:Chart.Axes>
<local:DateTimeAxis IntervalType="OddDays" Orientation="X" Interval="1"/>
</charting:Chart.Axes>
Interval="2"
1 の代わりに設定することもできますが、set 内の日をスキップする31.01-1.02-3.02
ので、値 1 を使用することをお勧めします。