2016-01-28 4 views
1

У меня есть следующий код, чтобы высота стека была в 1,4 раза больше ее ширины.Почему StackPanel ведет себя так, как если бы его Высота была установлена ​​на Авто, когда ее Высота установлена ​​из кода за

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.

Может кто-нибудь скажет мне, как это исправить?

+0

пытаются изменить внутреннюю StackPanel к сетке с 2-мя рядами. где первая строка height = auto, вторая строка height = * –

ответ

0

Свойство, чтобы получить ширину называется ActualWidth не Width, попробуйте следующее:

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