控制并转换为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