Silverlight 3:尺寸模型/ 100%尺寸

时间:2009-07-28 12:55:45

标签: silverlight xaml silverlight-3.0

很抱歉提出一个完整的n00b问题,但我已经尝试了我能想到的一切,但没有任何效果。

Google并没有太大用处,所有结果都来自古老版本的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 ListBox 没有获得任何高度,因此它们不可见。

我希望这些控件从父级继承它们的高度。它们应该是页面高度的100%。

我试过了:

  1. 输入高度百分比。无效。
  2. 在Blend 3的帮助下将高度绑定到LayoutRoot的高度。没有任何区别。
  3. 输入*作为高度。无效。
  4. 对于在Flex中实现相同功能的'记录'来说(是,我这样做是对两种技术的比较)真的很容易..

1 个答案:

答案 0 :(得分: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中是一样的。