更新:我设法通过为系列数据点创建简单的样式模板来解决这个问题。对于任何面临类似问题的人来说,这是我的简单代码。此代码不显示系列 LegendItems,但我认为它可以以类似的方式修复。
<Style
x:Key="MyColumnDataPointStyle"
TargetType="charting:ColumnDataPoint">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="charting:ColumnDataPoint">
<Border
Background="Plum"
BorderBrush="Gray"
BorderThickness="1"
Opacity="1"
x:Name="Root" >
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter TargetName="Root" Property="Background" Value="Yellow"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
我在 WPF/C# 项目中使用 system.windows.controls.datavisualization.toolkit 来创建图表。
我创建图表没有问题,但是当我尝试将其打印到 XPS 时,它根本不显示系列。加载窗口时打印图表工作正常,但我需要打印图表而不在窗口中显示它。
窗口中显示的图表:
XPS 中的图表:
这是我创建 XPS 文件的方法:
XpsDocument doc = new XpsDocument(@".\chart.xps", FileAccess.Write);
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);
VisualsToXpsDocument vToXpsD = (VisualsToXpsDocument)writer.CreateVisualsCollator();
foreach (Canvas canvas in reportViewer.Document.Pages)
{
canvas.Measure(canvas.RenderSize);
canvas.Arrange(new Rect(new Point(0, 0), canvas.RenderSize));
vToXpsD.Write(canvas);
}
vToXpsD.EndBatchWrite();
doc.Close();
图表代码:
Chart chart = new Chart();
BarSeries bar = new BarSeries();
Binding valuesBinding = new Binding("Value");
Binding namesBinding = new Binding("Title");
bar.ItemsSource = content.Series[0].Points;
bar.IndependentValueBinding = namesBinding;
bar.DependentValueBinding = valuesBinding;
chart.Series.Add(bar);
我已经尝试过这个解决方案,但我无法让它工作。
任何帮助深表感谢!