【问题标题】:Why is a StackPanel behaving as if its Height was set to Auto when its Height is set from code behind当从后面的代码设置其高度时,为什么 StackPanel 的行为就像其高度设置为自动一样
【发布时间】:2016-01-28 14:34:24
【问题描述】:

我有以下代码可以使 StackPanel 的高度成为其宽度的 1.4 倍。

C#:

private void AutoRun()
{
    //Page height
    double PageHeight = Window_1_Document_Page_1.Width * 1.4;
    Window_1_Document_Page_1.Height = PageHeight;
}

XAML:

<StackPanel Name="Window_1" BorderBrush="Black" BorderThickness="1" Grid.Row="0" Grid.Column="0">

    <Grid BorderThickness="0,0,0,1" BorderBrush="Black">
        <TextBlock FontSize="18" Name="Window_1_Title" Padding="5">New Document 1</TextBlock>
        <Button HorizontalAlignment="Right" Name="Window_1_Close" Content="Close Window" Visibility="Collapsed" Click="CloseWindow_Click"/>
    </Grid>

    <ScrollViewer VerticalScrollBarVisibility="Visible" HorizontalScrollBarVisibility="Disabled">
        <Grid Name="Window_1_Document_Page_1" Margin="20" BorderThickness="1" BorderBrush="Black" Padding="10">
            <TextBox Name="TextBox1" AcceptsReturn="False" BorderBrush="Transparent" BorderThickness="0" FontFamily="Calibri" FontSize="16" Height="Auto" Width="Auto" TextWrapping="Wrap" Text="{Binding ElementName = Window_1_Document_Page_1, Path = ActualWidth}" />
        </Grid>
    </ScrollViewer>

</StackPanel>

但是,StackPanel Window_1_Document_Page_1 呈现的好像其高度设置为 Auto。

谁能告诉我如何解决这个问题?

【问题讨论】:

  • 尝试将内部 StackPanel 更改为 2 行网格。其中第一行高度 = auto,第二行高度 = *

标签: c# xaml win-universal-app stackpanel


【解决方案1】:

获取宽度的属性叫ActualWidth而不是Width,试试这个:

double PageHeight = Window_1_Document_Page_1.ActualWidth* 1.4;
Window_1_Document_Page_1.Height = PageHeight;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多