Silverlight - 动态布局

时间:2009-12-11 00:58:49

标签: silverlight

我有一个将耗尽浏览器的Silverlight应用程序。我希望布局根据窗口的大小调整大小。布局由网格组成。此Grid有一个Canvas,它承载一个Border和其他控件。随着窗口调整大小,Canvas正确调整大小。但是,边框控件似乎是固定大小。如何使Border控件拉伸到Canvas的宽度并在Window调整大小时调整大小?我的代码如下所示:

<Grid x:Name="LayoutRoot">
  <Grid.ColumnDefinitions>
    <ColumnDefinition/>
    <ColumnDefinition/>
  </Grid.ColumnDefinitions>

  <Canvas x:Name="myCanvas" Background="Lime">
    <Border Canvas.Top="77" Border="Black" BorderThickness="2">
       <TextBlock x:Name="myTextBlock" />
    </Border>
  </Canvas>
</Grid>

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

假设您希望Canvas绑定到第一个Grid.Column,那么您可以添加RowDefinitions然后将边框移动到画布外部,然后以下代码应该可以正常工作。

(仅在WPF中测试)

<Grid x:Name="LayoutRoot">
    <Grid.ColumnDefinitions>
        <ColumnDefinition/>
        <ColumnDefinition/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="77"/>
        <RowDefinition/>
    </Grid.RowDefinitions>

    <Canvas x:Name="myCanvas" Background="Lime" Grid.RowSpan="2">
    </Canvas>

    <Border Grid.Row="1" Border="Black" BorderThickness="2" VerticalAlignment="Top">
        <TextBlock x:Name="myTextBlock" Text="Happy TEXT" />
    </Border>
</Grid>

新内容:<Grid.RowDefinitions>Grid.RowSpan="2"到Canvas,Grid.Row="1"VerticalAlignment="Top"到边框。 添加了用于测试的文本。