似乎 不是 打印时要评估所有绑定(bind)。例如,在下面的代码中,只有第一个按钮的内容=“100”,其他按钮的内容=“0”。
var doc = new XpsDocument("test.xps",FileAccess.Write);
var writer = XpsDocument.CreateXpsDocumentWriter(doc);
var collator = writer.CreateVisualsCollator();
collator.BeginBatchWrite();
for (int i = 0; i < 3; i++)
{
var button = new Button();
button.SetBinding(ContentControl.ContentProperty,
new Binding
{
RelativeSource = new RelativeSource(RelativeSourceMode.Self),
Path = new PropertyPath("ActualWidth")
});
button.Measure(new Size(100, 100));
button.Arrange(new Rect(0, 0, 100, 100));
button.Width = 100;
button.Height = 100;
collator.Write(button);
}
collator.EndBatchWrite();
doc.Close();
有解决方法吗?
例如,有没有办法强制绑定(bind)进行评估?
最佳答案
您是否尝试过在调用 collator.EndBatchWrite() 之前确保调度程序处于空闲状态。
就像是:
Dispatcher.CurrentDispatcher.Invoke(
new Action( delegate { } ), DispatcherPriority.ApplicationIdle, null );
关于wpf - 如何在打印时使用 WPF 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3281399/