Для Кевина
Поскольку Кевин первоначально задал вопрос, позвольте мне сначала заявить: это странно.Представление набора рядов столбцов смещено от левого начала, которое должно быть.Как отмечалось в моем комментарии много месяцев назад, мне нужно больше подробностей, чтобы попытаться понять, почему происходит эта странность.
Для LordCover
Чтобы ответить на дополнение от LordCoverчто я не думаю, что это действительно связано.
Ответ на самом деле зависит от того, что вы намерены установить ширину.Я отвечу на основании, что вы просто хотите более тонкие столбцы (большие промежутки между столбцами).Я выбрал эту основу, потому что не могу придумать никаких других причин для этого.
Код в ColumnSeries
специально присваивает Width
каждой точке данных, тем самым превосходя любое значение, которое вы можете иметьустановить в стиле.Так что установка ширины в стиле точки данных не сработает.Кроме того, если у вас есть несколько рядов, вы потеряете палитру по умолчанию, и вам придется выполнять всю эту работу самостоятельно.
Что вы можете сделать, это создать производный 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);
}
}
Этот класс позволяет оригиналу ColumnSeries
выполнять всю тяжелую работу, а затем настраивать ширину и левое положение точки данных после этого.