2009-07-28 126 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