我跳過了第二個問題,因爲它足夠複雜,可以獨立使用。
我面臨同樣的問題,但它可能是由幾個不同的事情引起的。
如果問題是因爲綁定還沒有「跳閘」,那麼解決方案有點冒險,但是如果控制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
如果不工作,你可能會遇到一個bug,其中第一頁上的綁定從未露面。在我能夠重新找到解決方案之前,我必須挖掘一段時間。
我建議大力解決第二個問題,因爲這是一個非常複雜的問題。 – Will 2010-09-27 19:25:21
順便說一句,第二個問題是我見過的唯一一個接近解決這個問題的東西,這篇文章從07年開始討論。您可以嘗試詢問自那時以來是否有任何更新。 http://blogs.msdn.com/b/fyuan/archive/2007/03/10/convert-xaml-flow-document-to-xps-with-style-multiple-page-page-size-header-margin。 aspx – Will 2010-09-27 19:43:18