控制并转换为XPS

我试图将XAML控件转换为XPS文档,但我希望以批处理模式执行此操作 - 在内存中呈现控件并将其打印到XPS,而无需将其呈现在屏幕上。 即使没有GUI,这个项目也可以工作。

我读过关于stackoverflow的相关话题,但它不能正常工作。 我可以创建控件,设置DataContext,但输出xps为空。 如果我在屏幕上呈现控件然后打印它,一切都可以,但是如果我想在批处理模式下执行此操作,则会获得空文档(只有静态标签等)

我如何强制控件绑定控件与数据?

接下来的难题将是:如何在每页上添加自定义页眉,如果我打印长多页面控件? (如清单?)


我跳过了第二个问题,因为它足够复杂,可以独立使用。

我面临同样的问题,但它可能是由几个不同的事情造成的。

如果问题是因为绑定还没有“跳闸”,那么解决方案有点冒险,但如果您控制DataContext类型,则很容易做到。 您只需在您的类型中添加公共或内部方法,即可为每个公共属性启动PropertyChanged事件。 这是一个例子:

public interface IForceBinding : INotifyPropertyChanged
{
  void ForceBindings();
}

public class MyDataContext : IForceBinding
{
  public event PropertyChanged;
  private string _text;
  public string Text
  {
    get{return _text;}
    set{_text = value; OnPropertyChanged("Text");}
  }
  public void ForceBindings()
  {
    OnPropertyChanged("Text");
  }

  private void OnPropertyChanged(string propertyName)
  { 
    // you know the drill
  }
}

那么,你可以这样使用它:

public void Print(MyDataContext preconfiguredContext){
  var page = new MyWpfPage();
  page.DataContext = preconfiguredContext;
  preconfiguredContext.ForceBindings();
  // write to xps

如果这不起作用,您可能会遇到第一页上的绑定从不出现的错误。 在我能够重新找到解决方案之前,我必须挖掘一段时间。

链接地址: http://www.djcxy.com/p/21397.html

上一篇: controls and convert to XPS

下一篇: Adding a delay on mouseout with jquery