Silverlight列系列图表宽度问题

Silverlight列系列图表宽度问题,silverlight,silverlight-4.0,charts,silverlight-toolkit,Silverlight,Silverlight 4.0,Charts,Silverlight Toolkit,我使用Silverlight Toolkit中的标准Silverlight图表在图表上显示了一些数据,但是所有数据不会显示在一个图表上,而且每组列之间似乎存在大量的间距,这导致数据的右侧列被“截断” 有人知道我如何减少这个间距和/或告诉图表有一个固定的宽度,使其适合所有列吗 下面是一张图片,直观地展示了问题。 LordCover编辑:我添加了一个原始问题,我想用一种直接的方法为每个ColumnSeries设置固定宽度。我试着用 <Style x:Key="DataPointStyle1"

我使用Silverlight Toolkit中的标准Silverlight图表在图表上显示了一些数据,但是所有数据不会显示在一个图表上,而且每组列之间似乎存在大量的间距,这导致数据的右侧列被“截断”

有人知道我如何减少这个间距和/或告诉图表有一个固定的宽度,使其适合所有列吗

下面是一张图片,直观地展示了问题。

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的相对宽度。

对于Kevin

既然凯文最初问了这个问题,让我先说一句:那是韦尔德。列系列集合的表示方式从其应有的左侧原点偏移。正如我在许多月前的评论中暗示的那样,我需要更多的细节来试图弄清为什么会出现这种情况

用于LordCover

回答洛德盖普的补充,我认为这并不是真的相关

答案实际上取决于设置宽度的意图。我的回答是,您只需要更薄的列(列之间的间距更大)。我之所以选择这个基础,是因为我想不出任何其他理由

列系列
中的代码专门指定每个数据点的
宽度
,从而超过您在样式中可能设置的任何值。因此,仅在数据点样式中设置宽度是行不通的。此外,如果您有多个系列,那么您将失去默认调色板,并且您还必须自己完成所有这些工作

您可以做的是创建一个衍生列系列。比如:-

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); 
    }
}

这个类让原始的
ColumnSeries
完成所有繁重的工作,然后调整数据点的宽度和左侧位置。

包括图表xaml和您正在应用的任何自定义样式。我不知道您是否仍然感兴趣,但也许我们现在得到了一个答案:)您能在这里帮助我吗