创建Frameworkelement而不在MainPage上显示它

时间:2014-08-23 21:22:53

标签: c# xaml windows-runtime winrt-xaml

我尝试打印View而不在MainPage上显示。 我的观点中包含DataContext的{​​{1}}。 我测试了两个并将视图绑定为我ViewModel的孩子。 这非常有效,我可以在此之后使用它作为打印预览。 但是当我尝试创建它时,它不起作用,MainPageMeassure()并在此之后添加设置作为打印预览。

所以我认为主要的问题是它不会渲染我的页面。 我在下面的代码中尝试做的是" 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作为孩子将它绑定。那我怎么能渲染这个呢。 非常感谢。

0 个答案:

没有答案