我尝试打印View
而不在MainPage
上显示。
我的观点中包含DataContext
的{{1}}。
我测试了两个并将视图绑定为我ViewModel
的孩子。
这非常有效,我可以在此之后使用它作为打印预览。
但是当我尝试创建它时,它不起作用,MainPage
和Meassure()
并在此之后添加设置作为打印预览。
所以我认为主要的问题是它不会渲染我的页面。
我在下面的代码中尝试做的是" size"我至少Arrange()
。
Frameworkelement
是我的(XamlPage)FooView
我想设置为打印预览。所以我只需要它呈现为UserControl
。
这些是我FrameworkElement
的Getter和Setter。
View
这是我初始化它们的方式。
public sealed partial class FooView: UserControl
{
public FooView()
{
this.InitializeComponent();
}
public new FooViewModel DataContext
{
get
{
return (FooViewModel)base.DataContext;
}
set
{
if (value != base.DataContext)
{
base.DataContext = value;
}
}
}
}
这是我到目前为止所尝试的。
FooViewModel viewModel = new FooViewModel();
viewModel.PrintDescription = new PrintDescription(
headerLeft: string.Empty,
headerCenter: string.Empty,
headerRight: string.Empty,
footerLeft: string.Empty,
footerCenter: string.Empty,
pageNumber: this.PrintStorage.Count,
lastPageNumber: this.PrintStorage.Count + 1);
// just the Content of my page not the View itself.
viewModel.PageContent = (FrameworkElement) PageContent;
FooView view = new FooView();
view.DataContext = vieModel;
但是没有任何关系可以渲染我的 // --- first try --- //
FooView.InvalidateMeasure();
FooView.InvalidateArrange();
FooView.UpdateLayout();
// --- second try --- //
FooView.Measure(new Size(this.PrintDescription.Width, this.PrintDescription.PrintHeight));
FooView.Arrange(new Rect(0, 0, this.PrintDescription.PrintWidth, this.PrintDescription.PrintHeight));
FooView.UpdateLayout();
// --- third try --- //
FooView.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
FooView.Arrange(new Rect(0, 0, this.PrintDescription.PrintWidth, this.PrintDescription.PrintHeight));
FooView.UpdateLayout();
。我实现它的唯一方法就是首先在PrintView
作为孩子将它绑定。那我怎么能渲染这个呢。
非常感谢。