2011-08-12 45 views

回答

4

您可以使用以下..

编辑
新增结合其Width/HeightGridFixedPageActualWidth/ActualHeight实现定心

<DocumentViewer> 
    <FixedDocument> 
     <PageContent> 
      <FixedPage HorizontalAlignment="Center"> 
       <Grid Width="{Binding RelativeSource={RelativeSource AncestorType={x:Type FixedPage}}, 
             Path=ActualWidth}" 
         Height="{Binding RelativeSource={RelativeSource AncestorType={x:Type FixedPage}}, 
             Path=ActualHeight}"> 
        <local:MyUserControl HorizontalAlignment="Center"/> 
       </Grid> 
      </FixedPage> 
     </PageContent> 
    </FixedDocument> 
</DocumentViewer> 

不幸的是,Visual Studio 2010的设计师在这里打破并且您会收到一条消息,指出“Property'网页'不支持'PageContent'类型的值。
This在这里报道:WPF FixedDocument object doesn't allow PageContent children

正如你可以在代码中加载它背后

的XAML

<DocumentViewer> 
    <FixedDocument Loaded="FixedDocument_Loaded"/> 
</DocumentViewer> 

后面的代码

private void FixedDocument_Loaded(object sender, RoutedEventArgs e) 
{ 
    FixedDocument fixedDocument = sender as FixedDocument; 

    MyUserControl myUserControl = new MyUserControl(); 
    myUserControl.HorizontalAlignment = HorizontalAlignment.Center; 
    myUserControl.VerticalAlignment = VerticalAlignment.Center; 

    Grid grid = new Grid();    
    grid.Children.Add(myUserControl); 

    FixedPage fixedPage = new FixedPage(); 
    fixedPage.Children.Add(grid); 

    Binding widthBinding = new Binding("ActualWidth"); 
    widthBinding.Source = fixedPage; 
    Binding heightBinding = new Binding("ActualHeight"); 
    heightBinding.Source = fixedPage; 
    grid.SetBinding(Grid.WidthProperty, widthBinding); 
    grid.SetBinding(Grid.HeightProperty, heightBinding); 

    PageContent pageContent = new PageContent(); 
    (pageContent as IAddChild).AddChild(fixedPage); 

    fixedDocument.Pages.Add(pageContent); 
} 
+0

一个问题解决方法,我怎么能将用户控件集中在页面中?因为它出现在角落 –

+0

@ oscar.fimbres:请参阅我的更新回答 –

+0

@ oscar.fimbres:如果我的答案解决了您的问题,请将其标记为已接受,以便其他人可以更容易地为其提供帮助:) –