在这种情况下如何保持Grid的宽高比?

时间:2014-09-16 14:56:16

标签: c# .net silverlight grid row

我正在使用silverligth 5,并且我在网格中有3行。  第一个包含一些文本,第二个包含Scrollviewer,第三个包含按钮。

当我调整网格大小时我想要类似的东西(假设使其变小)然后按钮(第3行)必须保持但滚动查看器(row2)内的数据可以变小(可以通过scrollviewer进一步查看)第一行的UIelement也必须像按钮一样保持不变。

这是我尝试的代码:

<Grid x:Name="LayoutRoot" Background="{StaticResource BGBrush_1}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>



    <TextBlock Grid.Row="0" Text="EOD" FontWeight="Bold" Foreground="Orange" Margin="10" VerticalAlignment="Center" />

    <ScrollViewer x:Name="panelScrollViewer" Grid.Row="1" VerticalScrollBarVisibility="Hidden" Height="600">
        <telerik:RadTreeView Name="RadTreeViewObj" VerticalAlignment="Center" Margin="50" Background="{StaticResource BGBrush_1}" BorderBrush="{StaticResource BGBrush_1}" ItemsSource="{Binding EODDataStepsCollection}" SelectionMode="Single" ItemContainerStyle="{StaticResource TreeViewItemStyle}">
            <telerik:RadTreeView.ItemTemplate>
                <telerik:HierarchicalDataTemplate ItemsSource="{Binding RelatedItems}">
                    // here are some UI elements
                </telerik:HierarchicalDataTemplate>
            </telerik:RadTreeView.ItemTemplate>
        </telerik:RadTreeView>
    </ScrollViewer>

    <Grid Grid.Row="2">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="*" />
            <ColumnDefinition Width="Auto" />
        </Grid.ColumnDefinitions>
        <Button Grid.Column="0" x:Name="CancelButton" Content="Cancel" FontWeight="Bold" Command="{Binding ButtonCancelCommand}" Height="23" HorizontalAlignment="Left" Margin="30,10,10,10" Style="{StaticResource ButtonStyle_Blue}" VerticalAlignment="Bottom" Width="80" Visibility="{Binding IsValidateVisible, Converter={StaticResource BooleanToVisibilityConverter}}" />
        <Button Grid.Column="1" x:Name="ValidateButton" Content="Validate" FontWeight="Bold" Command="{Binding ButtonValidateCommand}" Height="23" HorizontalAlignment="Right" Margin="10,10,30,10" Style="{StaticResource ButtonStyle_Blue}" VerticalAlignment="Bottom" Width="80" Visibility="{Binding IsValidateVisible, Converter={StaticResource BooleanToVisibilityConverter}}" />
    </Grid>
</Grid>

如何实现

请注意隐藏在后面的第二个按钮。 (只有一半可见)。怎么解决这个问题?

1 个答案:

答案 0 :(得分:2)

将您的rowdefinitions更改为:

<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />

从ScrollViewer中删除固定的Height

第一行和最后一行将尽可能小,而中间行将占用剩余空间。

为避免按钮重叠,您可以将它们放置如下:

<StackPanel Grid.Row="2" HorizontalAlignment="Right" Orientation="Horizontal">
        <Button x:Name="ValidateButton" Content="Validate" FontWeight="Bold" Margin="10,10,30,10" VerticalAlignment="Bottom" Width="80"/>
        <Button x:Name="CancelButton" Content="Cancel" FontWeight="Bold" Margin="30,10,10,10"  VerticalAlignment="Bottom" Width="80" />
</StackPanel>

注意:这将右对齐“取消”按钮。 (我也把它放在Validate按钮的右边)