2
我已經建立了它可以創建XAML XPS文檔模板化的打印系統,通過WPF的CreateVisualsCollator()
:手動加載框架元素
FrameworkElement fe = ...;
using (Package p = Package.Open(...))
using (XpsDocument doc = new XpsDocument(p))
{
XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);
SerializerWriterCollator col = writer.CreateVisualsCollator();
Size size = new Size(page size...)
fe.Measure(size);
fe.Arrange(new Rect(size));
fe.UpdateLayout();
col.Write(fe);
// fe.IsLoaded is still false here!
}
我這樣做沒有一個UI禮物 - 這其實是註定對於Windows服務。
我一直在做黑客手動調用UpdateLayout()
執行大小,並意識到我必須這樣做的原因是,控件永遠不會觸發它們的事件,並且永遠不會進入加載狀態。我剛剛遇到了麻煩,因爲這已成爲一個問題,我的破解不再有效。
有沒有辦法手動觸發一個元素及其所有子元素的正確加載?
未加載在initializecomponent方法中調用的事件? – Clueless
沒有。它在渲染之前被調用一段時間。 –