Я пропускаю ваш второй вопрос, поскольку он достаточно сложен, чтобы быть автономным.
Я столкнулся с той же проблемой, но она может быть вызвана несколькими причинами.Если проблема заключается в том, что привязки еще не «сработали», решение будет немного хакерским, но его легко сделать, если вы управляете типом 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
Если это не работает, вы можете столкнуться с ошибкой, когда привязки на первой страниценикогда не показывайсяМне придется немного покопаться, прежде чем я смогу найти решение этой проблемы.