2010-12-06 12 views
2

Silverlight Toolkitの標準Silverlightチャートを使用してチャートにデータを表示していますが、すべてのデータが1つのグラフに表示されず、間隔が大きくなるようです列の各セットは、データの右側の列が「切断」される結果となる。Silverlight Column Seriesチャート幅質問

どのように私はこの間隔を減らすことができます/またはすべての列に収まるように固定幅を持つグラフを教えてください。

以下は、問題を視覚的に示すイメージです。 alt text

LordCover編集:私は、私はそれぞれのColumnSeriesのために一定の幅を設定するための直接的な方法をしたい元の質問に追加します。私は

<Style x:Key="DataPointStyle1" TargetType="charting:ColumnDataPoint"> 
    <Setter Property="Width" Value="5px" /> 
</Style> 

を使用していることを試してみました。そして、のColumnSeriesマークアップに:

<charting:ColumnSeries 
    IndependentValueBinding="{Binding Path=Key}" 
    DependentValueBinding="{Binding Path=Value}" 
    DataPointStyle="{StaticResource DataPointStyle1}" 
    Title="Sales Amount"/> 

しかし、それだけでチャートの幅にしてシリーズ-ESの#に相対的な幅を取得します。ケビンは、元々の質問をしているので

+0

Chart xamlと適用するカスタムスタイルを含めます。 – AnthonyWJones

+0

あなたがまだ興味があるかどうか分かりませんが、おそらく今私たちは答えを得るでしょう:) –

答えて

4

ケビンについて

は、私はちょうど第一の状態ましょう:それは奇妙です。列シリーズのセットの提示は、それが持つべき左手原点からオフセットされる。私のコメントでは、多くの月前に私は、その厄介が起こっている理由を識別しようとするために、より詳細を必要とするだろうと暗示した。 LordCover

については

私は本当に関連しているとは思わないLordCoverからほかに答えるために。

答えは実際にあなたの意図が幅を設定することによって決まります。私はあなたが薄いカラム(カラム間のより大きいギャップ)をほしいと思っているということに基づいて答えます。私はそれを行うための他の理由を考えることができないので、私はこの基礎を選んだ。

ColumnSeriesのコードでは、各データポイントのWidthが割り当てられ、スタイルに設定されている可能性のある値がすべて切り捨てられます。データポイントスタイルで幅を設定するだけでは機能しません。また、複数のシリーズを持っている場合は、デフォルトのパレットを失いますので、自分で動作するすべての作業を行う必要があります。

派生型ColumnSeriesを作成することができます。以下のようなもの: - このクラスは、元ColumnSeriesは、すべての重労働を行うことができます

public class FixedWidthColumnSeries : ColumnSeries 
{ 
    #region public double ColumnWidth 
    public double ColumnWidth 
    { 
     get { return (double)GetValue(ColumnWidthProperty); } 
     set { SetValue(ColumnWidthProperty, value); } 
    } 


    public static readonly DependencyProperty ColumnWidthProperty = 
     DependencyProperty.Register(
      "ColumnWidth", 
      typeof(double), 
      typeof(FixedWidthColumnSeries), 
      new PropertyMetadata(5.0)); 

    #endregion public double ColumnWidth 

    protected override void UpdateDataPoint(DataPoint dataPoint) 
    { 
     base.UpdateDataPoint(dataPoint); 
     double originalWidth = dataPoint.Width; 
     double newWidth = ColumnWidth; 
     dataPoint.Width = newWidth; 
     Canvas.SetLeft(dataPoint, Canvas.GetLeft(dataPoint) + (originalWidth - newWidth)/2); 
    } 
} 

は、幅とその後のデータポイントの左位置を微調整します。

+0

ここで私を助けてください。http://stackoverflow.com/questions/22347210/scrolling-x-axis-plot-area -silverlight-column-series – Goofy

関連する問題