2009-07-28 1 views
0

완전한 n00b 질문을 드려 죄송합니다. 생각할 수있는 모든 것을 시도했지만 아무 것도 작동하지 않았습니다.Silverlight 3 : 크기 조정 모델/100 % 크기

구글이 모든 결과는 실버 라이트의 고대 버전입니다, 너무 유용하지 않은 :(

는 문제 :. 내가 실버 라이트 사용자 컨트롤을 가지고

레이아웃 루트는 그리드입니다. 그리드는 이렇게 정의된다 :

<Grid.ColumnDefinitions> 
    <ColumnDefinition Width="30" /> 
    <ColumnDefinition Width="*" /> 
    <ColumnDefinition Width="30" /> 
</Grid.ColumnDefinitions> 

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

<MyScrollButton Grid.Column="0" Name="LeftScroller" Width="30" Height="Auto" /> 

<ListBox x:Name="ScrollBox" Grid.Column="1" RenderTransformOrigin="0.5, 0.5" 
     ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
     ItemContainerStyle="{Binding Source={StaticResource ListBoxItemStyle}}" 
     ItemsSource="{Binding Source={StaticResource ControlState:myItemSource}}" 
     Style="{Binding Source={StaticResource ListBoxStyle}}" 
     HorizontalAlignment="Center" 
     BorderThickness="0" Width="Auto" Height="796"> 

    <ListBox.ItemsPanel> 
     <ItemsPanelTemplate> 
      <StackPanel Orientation="Horizontal"/> 
     </ItemsPanelTemplate> 
    </ListBox.ItemsPanel> 

</ListBox> 

<MyScrollButton Grid.Column="2" Width="30" Height="Auto"/> 

이것을 실행하면 LayoutRoot의 크기가 올바르게 조정됩니다. 브라우저 창을 채 웁니다.

그러나 자식 컨트롤은 (다시) 크기가 아닙니다. MyScrollButtonListBox은 높이를 얻지 못하므로 보이지 않습니다.

이 컨트롤이 부모로부터 높이를 상속 받기를 원합니다. 페이지 높이의 100 %이어야합니다.

이 나는 ​​시도했다 :

  1. 는 높이의 비율을 입력. 올바르지 않습니다.
  2. Blend 3의 도움으로 LayoutRoot의 높이에 바인딩 높이. 아무런 차이가 없습니다.
  3. *를 높이로 입력하십시오. 올바르지 않습니다. 플렉스에서 동일한 기능을 구현하는 '기록'에 대한

은 정말 쉽게 (나는 두 요원의 비교이 일을하고있어했다)입니다 ..

답변

1

내가 실버 라이트 3가 설치되지 않은 그래서 저는 2에서 이것을했습니다. 테스트 할 "MyScrollButton"컨트롤도 없습니다. 그러나이 코드는 나를 위해 일했습니다 :

<UserControl 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
    mc:Ignorable="d" 
    x:Class="RegexHero.UserControl1" 
    d:DesignWidth="640" d:DesignHeight="480"> 

    <Grid x:Name="LayoutRoot"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="30" /> 
     <ColumnDefinition Width="*" /> 
     <ColumnDefinition Width="30" /> 
    </Grid.ColumnDefinitions> 

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


    <ListBox x:Name="ScrollBox" Grid.Column="1" RenderTransformOrigin="0.5, 0.5" 
        ScrollViewer.HorizontalScrollBarVisibility="Hidden" 
        ItemContainerStyle="{Binding Source={StaticResource ListBoxItemStyle}}" 
        ItemsSource="{Binding Source={StaticResource ControlState:myItemSource}}" 
        Style="{Binding Source={StaticResource ListBoxStyle}}" 
        HorizontalAlignment="Center" 
        BorderThickness="0" Width="Auto" Height="Auto" VerticalAlignment="Stretch"> 

      <ListBox.ItemsPanel> 
        <ItemsPanelTemplate> 
          <StackPanel Orientation="Horizontal"/> 
        </ItemsPanelTemplate> 
      </ListBox.ItemsPanel> 

    </ListBox> 


    </Grid> 
</UserControl> 

ListBox는 화면 높이를 채 웁니다. Silverlight 3에서 동일하게되기를 바랍니다.

+0

감사합니다. 정확하게 말하면 Height를 Auto로 설정하고 VerticalAlign을 Stretch로 설정하면됩니다. –