2015-07-06 25 views
0

下面我有一些相當原始的代碼(只測試,試圖證明這一點)。我有一個網格行和網格列,它們的寬度和高度都分別定義爲「*」,以便它們用盡其他行/列未使用的所有可用空間。相當標準,或者我想。如果XAML Grid Row/Column是「*」 - 如何以編程方式獲取可用區域?

<Grid x:Name="PageContent" Background="{Binding PageColor}"> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="81" /> 
     <RowDefinition Height="*" /> 
     <RowDefinition Height="92" /> 
    </Grid.RowDefinitions> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
    </Grid.ColumnDefinitions> 

    <Button x:Name="backButton" Grid.Row="0" Grid.Column="0" Click="GoBack" IsEnabled="{Binding Frame.CanGoBack, ElementName=pageRoot}" Style="{StaticResource TopBackButtonStyle}" /> 
    <Button x:Name="searchButton" Grid.Row="0" Grid.Column="2" Click="GoSearch" Style="{StaticResource TopSearchButtonStyle}" HorizontalAlignment="Right"/> 
    <Button x:Name="settingsButton" Grid.Row="0" Grid.Column="3" Click="GoSettings" Style="{StaticResource TopSettingsButtonStyle}" HorizontalAlignment="Right"/> 

    <ScrollViewer Grid.Row="1" Grid.ColumnSpan="4" Name="MainScrollViewer" ZoomMode="Disabled" IsTabStop="False" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" Padding="0,0,0,20" > 
     <Image x:Name="PDFRenderedImage" AutomationProperties.Name="placeholder image" Source="Assets/placeholder-sdk.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Top" Margin="10,10,10,10"/> 
    </ScrollViewer> 

好吧,我正在嘗試使用一些微軟爲示例定義的更便宜的PDF顯示例程。其中之一是與PdfPageRenderOptions一起使用RenderToStreamAsync。

我想要做的一件事就是嘗試縮放PDF合成圖像,使頁面無論如何都適合屏幕顯示。但是,至少要使用PdfPageRenderOptions,這意味着我需要提前知道寬度/高度。因此,如何在程序中使用該元素之前的原始/列定義爲「*」的UIElement的寬度和高度(即,如何獲得可用區域大小大小尚未使用)。

有沒有人看到有更好的方法來做到這一點?

回答

0

如果您的區域未被使用,您可以隨時設置MinHieght和MinWidth。這樣它將默認爲MinHeight和MinWidth,並且仍然可以相應地展開/收縮。

希望這有助於:)

0

名稱添加到您的ScrollViewer,然後得到它的Widht/Height屬性後面的代碼中。

在Page.xaml

<ScrollViewer x:Name="MyScrollViewer"> 
    <Image.../> 
</ScrollViewer> 

在Page.xaml.cs

public void LoadPDF() 
{ 
    var height = MyScrollViewer.Height; 
    //do something with it 
} 
+0

在這種情況下,ScrollViewer中顯示的NaN和0的ActualHeight的高度因此,無論這些看起來像一個蕭條。 – RallyRabbit

0

UIElement.ActualHeigh和ActualWeight是我想要的。但還不完全。

我最終做的是混亂,我不喜歡它。我所做的是呈現PDF並將其顯示爲圖像。然後閱讀Actualheight和ActualWidth,並使用所使用的那些(可見的)尺寸重新渲染整個事物。

它的工作,它似乎很沉重,但它確實有效。

+0

其實不,那仍然不行。這隻給出用於原型製作的圖像的高度和寬度。 – RallyRabbit

0

只需給x:Name分配給您的特定行/列,分別比查詢它們的ActualHeightActualWidth。 (如果你真的想確保這個渲染階段發生後,有優先級設置做這一切的Dispatcher.Invoke

相關問題