0

まだウェブ上で答えを見つけることができていませんが、これが簡単な質問であることを願っています。

Silverlight Toolkitのラインシリーズの2010年4月リリースを使用しており、DateTimeAxisまたはLinearAxisに(指定した)最小値と最大値のみを表示する必要があります。「表示」とは、軸の両端に実際の「目盛り」とそれに関連する値を表示することを意味します。

これは可能ですか?

ありがとう!

4

2 に答える 2

1

私のブログであなたの Q に返信しました:

「やあビクター、これを行うように設計されていないため、組み込みの軸ではこれを達成できないと思います。ただし、この例で行っているように、チャートの x 軸をスタイリングすることでこれを実現できる可能性があります。チャートの両端の外側に 2 つのテキストブロックを下に配置することで、独自の疑似軸を作成できます。適切なフォーマットを取得するには時間がかかる場合がありますが、簡単な回避策であるため、LINQ を使用して最小値と最大値を取得できます。データがロードされ、これらの値にバインドされます。」

ここで、軸のスタイリングの例を含むコードを取得します。

http://slchartzoomandpan.codeplex.com/

于 2011-07-23T18:50:29.527 に答える
1

はい、できます。最小値と最大値を設定し、間隔を最小値と最大値の差として設定します。

すなわち:

<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" />

この解決策は複雑で申し訳ありません。さらに詳しいガイダンスが必要な場合はお知らせください。

于 2011-07-15T17:10:19.460 に答える