【问题标题】:How to remove FixedPage from FixedDocument?如何从 FixedDocument 中删除 FixedPage?
【发布时间】:2017-09-21 00:54:36
【问题描述】:

在允许用户打印或保存文档之前,我正在使用 DocumentViewer 向用户显示 FixedDocument。我已经编辑了 DocumentViewer 面板,使其具有一个复选框,允许用户选择是否需要文档中的图表。

我能够获取复选框被选中的事件及其值,但我无法找到从 FixedDocument 中删除图表并且不会在最后留下空白页的方法。我目前拥有它,以便在复选框上单击我隐藏并显示图表,但这又会留下一个空白页。

if (value) BarChart.Visibility = Visibility.Visible;
else BarChart.Visibility = Visibility.Collapsed;

我还尝试在复选框事件上重建 FixedDocument 并使用复选框值来决定是否包含图形页面。该文档第一次呈现良好,然后在取消选中复选框后图表页面消失,然后在重新选中复选框时显示图表页面但图表没有数据(缺少系列)。

有什么想法吗?

这可能是图表的数据绑定问题还是 FixedDocument 的问题?

注意: 我在后面的代码中构建图表并像这样添加它:

// Add other pages to ReportDocument here

if (IncludeGraphPage)
{
    // Add graph page            
    PageContent ChartDocumentPageContent = new PageContent();
    FixedPage ChartDocumentPage = new FixedPage();
    ChartDocumentPage.Margin = new Thickness(20);                   
    ChartDocumentPage.Children.Add(BarChart);                
    ((IAddChild)ChartDocumentPageContent).AddChild(ChartDocumentPage);
    ReportDocument.Pages.Add(ChartDocumentPageContent); 
}

// Set the document viewer content
DocumentViewer.Document = ReportDocument;

我已经检查了其他 SO 问题,但还没有解决方案对我有用。

【问题讨论】:

    标签: c# wpf fixeddocument


    【解决方案1】:

    我能够找到一种在不使图表系列消失的情况下重建 FixedDocument 的方法。关键是将图表添加为 VisualBrush,如下所示:

    VisualBrush chartBrush = new VisualBrush(BarChart) { Stretch = Stretch.Uniform };
    Rectangle ChartRectangle = new Rectangle { Width = (1056-2*96), Height = (816 - 2*96), Fill = chartBrush };
    ChartDocumentPage.Children.Add(ChartRectangle);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 2017-03-25
      相关资源
      最近更新 更多