2009-07-28 211 views
0

對不起,要求提出一個完整的n00b問題,但我試過了我能想到的一切,沒有任何工作。Silverlight 3:尺寸模型/ 100%尺寸

谷歌一直沒有太大的用處,所有的結果都是從古代版本的Silverlight :(

問題:

我有一個Silverlight的用戶控件的佈局根是一個網格。網格被限定爲使得:

<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正確調整大小。它填充瀏覽器窗口。

但是,子控件沒有(重新)大小。 MyScrollButton s和ListBox不獲取任何高度,因此它們不可見。

我想要這些控件繼承父對象的高度。它們應該是頁面高度的100%。

我已經試過:

  1. 輸入百分比的高度。無效。
  2. 在Blend 3的幫助下將高度綁定到LayoutRoot的高度。沒有區別。
  3. 輸入*作爲高度。無效。

爲了實現Flex中相同的功能的「記錄」是(被,我這樣做是因爲這兩個科技股的比較)真的很容易..

回答

1

我沒有安裝Silverlight 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工作。 – 2009-07-28 13:40:55