2011-09-21 5 views
0

WP7 용 Silverlight를 배우고 있는데 약간의 문제가 발생했습니다. 높이를 1로 변환하고 다시 회전 시키려고합니다 (중심이 회전하는 것처럼 보입니다)). 코드 :Silverlight 타원형 높이 변환

<StackPanel x:Name="ContentPanel" Grid.Row="2" VerticalAlignment="Bottom"> 
    <StackPanel.Resources> 
     <Storyboard x:Name="UpDownStoryBoard"> 
      <DoubleAnimation Storyboard.TargetName="FirstEllipse" 
       Storyboard.TargetProperty="Height" 
       To="1" AutoReverse="True" 
       Duration="00:00:02" /> 
     </Storyboard> 
     <Storyboard x:Name="LeftRightStoryBoard"> 
      <DoubleAnimation Storyboard.TargetName="FirstEllipse" 
     Storyboard.TargetProperty="Width" 
     To="1" AutoReverse="True" 
     Duration="00:00:02" /> 
     </Storyboard> 
    </StackPanel.Resources> 
    <Border VerticalAlignment="Top"> 
     <Ellipse x:Name="FirstEllipse" Fill="Aqua" Height="150" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
    </Border> 
    <Grid x:Name="ContentGrid" HorizontalAlignment="Center" VerticalAlignment="Center" Width="438"> 
       <Grid.RowDefinitions> 
        <RowDefinition Height="33*" /> 
        <RowDefinition Height="33*" /> 
        <RowDefinition Height="33*" /> 
       </Grid.RowDefinitions> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="33*" /> 
        <ColumnDefinition Width="33*" /> 
        <ColumnDefinition Width="33*" /> 
       </Grid.ColumnDefinitions> 
       <Button Content="&lt;" Height="80" HorizontalAlignment="Center" Name="_lButton" VerticalAlignment="Center" Width="80" Grid.Row="1" Click="StartLeftRightStoryBoard" /> 
       <Button Content="&gt;" Height="80" HorizontalAlignment="Center" Name="_rButton" VerticalAlignment="Center" Width="80" Grid.Column="2" Grid.Row="1" Click="StartLeftRightStoryBoard" /> 
       <Button Content="^" Height="80" HorizontalAlignment="Center" VerticalAlignment="Center" Name="_uButton" Width="80" Grid.Column="1" Click="StartUpDownStoryBoard" /> 
       <Button Content="v" Height="80" HorizontalAlignment="Center" VerticalAlignment="Center" Name="_dButton" Width="80" Grid.Column="1" Grid.Row="2" Click="StartUpDownStoryBoard" /> 
      </Grid> 
</StackPanel> 

답변

1

이 때문에 컨테이너 --- 테두리 요소의입니다. 테두리가 StackPanel에 있고 높이가 자식 요소에 의해 결정됩니다. 그래서 타원의 높이가 내려 가면 국경의 높이도 내려갑니다.

해결책은 간단합니다. 테두리에 고정 된 높이를 지정하십시오.

<Border VerticalAlignment="Top" Height="400" Width="400"> 
     <Ellipse x:Name="FirstEllipse" Fill="Aqua" Height="150" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
</Border> 

희망이 도움이됩니다.

+0

고마워요! 그러나 높이를 50 %로 설정하는 방법은 무엇입니까? 단추가 50 %를 차지하고 경계선이 50 %가됩니까? 50 * – SBoss

+0

높이를 설정하는 데 백분율을 사용하려면 레이아웃 컨트롤로 Grid를 사용해야합니다. 그런 다음 행 높이 0.5 *를 설정하십시오. –

+0

다시 도움을 주셔서 감사합니다. – SBoss

0

어쩌면 이것이 당신이 원하는 것일 수 있습니다.

<Grid x:Name="ContentPanel"> 
     <Grid.Resources> 
      <Storyboard x:Name="UpDownStoryBoard"> 
       <DoubleAnimation Storyboard.TargetName="FirstEllipse" 
       Storyboard.TargetProperty="Height" 
       To="1" AutoReverse="True" 
       Duration="00:00:02" /> 
      </Storyboard> 
      <Storyboard x:Name="LeftRightStoryBoard"> 
       <DoubleAnimation Storyboard.TargetName="FirstEllipse" 
     Storyboard.TargetProperty="Width" 
     To="1" AutoReverse="True" 
     Duration="00:00:02" /> 
      </Storyboard> 
     </Grid.Resources> 

     <Grid.RowDefinitions> 
      <RowDefinition Height="0.5*" /> 
      <RowDefinition Height="0.5*" /> 
     </Grid.RowDefinitions> 

     <Border> 
      <Ellipse x:Name="FirstEllipse" Fill="Aqua" Height="150" Width="300" HorizontalAlignment="Center" VerticalAlignment="Center"/> 
     </Border> 
     <Grid Grid.Row="1" x:Name="ContentGrid" HorizontalAlignment="Center" VerticalAlignment="Center" Width="438"> 
      <Grid.RowDefinitions> 
       <RowDefinition Height="33*" /> 
       <RowDefinition Height="33*" /> 
       <RowDefinition Height="33*" /> 
      </Grid.RowDefinitions> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="33*" /> 
       <ColumnDefinition Width="33*" /> 
       <ColumnDefinition Width="33*" /> 
      </Grid.ColumnDefinitions> 
      <Button Content="&lt;" Height="80" HorizontalAlignment="Center" Name="_lButton" VerticalAlignment="Center" Width="80" Grid.Row="1" Click="StartLeftRightStoryBoard" /> 
      <Button Content="&gt;" Height="80" HorizontalAlignment="Center" Name="_rButton" VerticalAlignment="Center" Width="80" Grid.Column="2" Grid.Row="1" Click="StartLeftRightStoryBoard" /> 
      <Button Content="^" Height="80" HorizontalAlignment="Center" VerticalAlignment="Center" Name="_uButton" Width="80" Grid.Column="1" Click="StartUpDownStoryBoard" /> 
      <Button Content="v" Height="80" HorizontalAlignment="Center" VerticalAlignment="Center" Name="_dButton" Width="80" Grid.Column="1" Grid.Row="2" Click="StartUpDownStoryBoard" /> 
     </Grid> 
    </Grid>