2009-07-28 7 views
0

Désolé pour poser une question complète n00b, mais j'ai essayé tout ce que je peux penser et rien n'a fonctionné.Silverlight 3: dimensionnement modèle/100% taille

Google n'a pas été trop utile, tous les résultats sont des versions anciennes de Silverlight :(

Le problème:.

J'ai un Silverlight contrôle de l'utilisateur La racine de mise en page est une grille. la grille est définie de façon:

<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"/> 

Lorsque je l'exécute, LayoutRoot se redimensionne correctement. Il remplit la fenêtre du navigateur. Cependant, les contrôles enfants ne sont pas (re) dimensionnés. MyScrollButton s et ListBox ne pas obtenir de hauteur, ils ne sont donc pas visibles.

Je souhaite que ces contrôles héritent leur hauteur du parent. Ils devraient être 100% de la hauteur de la page.

J'ai essayé:

  1. Saisie des pourcentages dans les hauteurs. Invalide.
  2. Relier la hauteur à la hauteur de LayoutRoot avec l'aide de Blend 3. Ne fait aucune différence.
  3. Entrée * comme hauteur. Invalide.

Pour la mise en œuvre de « record » la même fonctionnalité dans Flex est (a été, je fais cela comme une comparaison des deux techs) très facile ..

Répondre

1

Je n'ai pas Silverlight 3 installé donc je l'ai fait en 2. Je n'ai pas non plus le contrôle "MyScrollButton" avec lequel tester. Mais ce code a fonctionné pour moi:

<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> 

La ListBox remplit la hauteur de l'écran. J'espère que ce serait la même chose dans Silverlight 3.

+0

Merci, cela a fonctionné :) Ou pour être précis, le réglage de la hauteur à Auto et VerticalAlign à Stretch travaillé. –