如何获得Page的高度?

时间:2012-11-30 17:56:59

标签: c# wpf xaml

如何获得Page?的高度,即;页面中所有元素的高度。

例如,如果我有这个制作页面的XAML,我怎样才能在运行时获得高度?

<Page x:Class="DialogViews.SomeError"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
      xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
      mc:Ignorable="d" 
      d:DesignHeight="300" d:DesignWidth="400"
    Title="SomeMessage">

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="50" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>

        <Label Grid.Row="0" Style="{StaticResource ResourceKey=DialogTitleError}">A Problem</Label>
        <TextBlock Grid.Row="1" Style="{StaticResource ResourceKey=DialogMsg}">
            Some message to user
        </TextBlock>
        <Label Grid.Row="2" HorizontalAlignment="Right">
            <Hyperlink>
                Some link for info
            </Hyperlink>
        </Label>
    </Grid>
</Page>

原因:

我创建了一个自定义窗口,它将向用户显示一个Dialog消息,Window包含一个Frame,它反过来包含这个Page。我正在尝试将窗口的高度固定为Page的高度。

我尝试过:

myPage.Height; //NaN
myPage.ActualHeight; //0

3 个答案:

答案 0 :(得分:1)

如果您希望将窗口大小调整为用户控件Page,那么我建议您尝试使用Window的SizeToContent属性。

 <Window x:Class "MyNameSpace.MyWindow"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         SizeToContent="Height" />

高度 - 指定窗口将自动设置其高度以适合其内容的高度,但不是宽度。

编辑:这将拉伸您的窗口以适应框架,希望设置为根据您的页面的宽度/高度更改。

答案 1 :(得分:0)

您在寻找

吗?
  SystemParameters.FixedFrameVerticalBorderWidth
  SystemParameters.FixedFrameHorizontalBorderHeight
  SystemParameters.WindowCaptionHeight

请检查此msdn link

答案 2 :(得分:0)

尝试

this.Height;<br/>
this.Width;