2009-07-28 18 views
0

Entschuldigung, dass ich eine vollständige n00b Frage gestellt habe, aber ich habe alles versucht, was mir einfiel und nichts hat funktioniert.Silverlight 3: Größenmodell/100% Größe

Google hat nicht allzu nützlich gewesen, alle Ergebnisse sind von den alten Versionen von Silverlight :(

Das Problem:.

ich einen Silverlight User Control habe Das Layout Wurzel ist ein Gitter. das Raster ist definiert so:

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

Wenn ich das ausführe, wird LayoutRoot korrekt skaliert. Es füllt das Browserfenster.

Die untergeordneten Steuerelemente sind jedoch nicht (neu) skaliert. MyScrollButton s und ListBox erhalten keine Höhe, so dass sie nicht sichtbar sind.

Ich möchte, dass diese Steuerelemente ihre Höhe vom übergeordneten übernehmen. Sie sollten 100% der Höhe der Seite betragen.

Ich habe versucht:

  1. Prozentsatz in Höhe eingeben. Ungültig.
  2. Bindung Höhe LayoutRoot Höhe mit Hilfe von Blend 3. Macht keinen Unterschied.
  3. Eingabe von * als Höhe. Ungültig.

Für die ‚Record‘ die gleiche Funktionalität in Flex Implementierung wird (wurde, mache ich dies als ein Vergleich der beiden Techs) einfach ..

Antwort

1

Ich habe keine 3 Silverlight installiert also habe ich das in 2 gemacht. Ich habe auch nicht das "MyScrollButton" -Steuerelement zum Testen. Aber dieser Code funktionierte für mich:

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

Die ListBox füllt die Höhe des Bildschirms. Ich hoffe, es wäre das gleiche in Silverlight 3.

+0

Danke, das hat funktioniert :) Oder um genau zu sein, Höhe auf Auto und VerticalAlign zu Stretch funktioniert eingestellt. –