2

更新: シリーズ データポイントのシンプルなスタイル テンプレートを作成するだけで、これを修正できました。ここで同様の問題に直面している人にとっては、私の簡単なコードです。このコードはシリーズの 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チャート

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

私はこの解決策を試しましたが、うまくいきませんでした。

どんな助けでも大歓迎です!

4

0 に答える 0