代码之家  ›  专栏  ›  技术社区  ›  Ryan Barrett

Silverlight 3:大小调整模型/100%大小

  •  0
  • Ryan Barrett  · 技术社区  · 15 年前

    很抱歉问了一个完整的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会正确调整大小。它将填充浏览器窗口。

    但是,子控件的大小不合适。 MyScLink按钮 S和 列表框 不要获得任何高度,因此它们不可见。

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

    我试过了:

    1. 输入高度百分比。无效。
    2. 在Blend 3的帮助下,将高度绑定到LayoutRoot的高度。没有区别。
    3. 输入*作为高度。无效。

    对于在flex中实现相同功能的“记录”来说(我做这个是为了比较两个技术人员)非常简单。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Steve Wortham    15 年前

    我没有安装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>
    

    列表框填充屏幕高度。我希望在Silverlight 3中是一样的。

    推荐文章