更新: シリーズ データポイントのシンプルなスタイル テンプレートを作成するだけで、これを修正できました。ここで同様の問題に直面している人にとっては、私の簡単なコードです。このコードはシリーズの 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);
私はこの解決策を試しましたが、うまくいきませんでした。
どんな助けでも大歓迎です!