Размер содержимого страницы Silverlight в зависимости от размера браузера - PullRequest
0 голосов
/ 16 сентября 2011

У меня есть класс Page, содержащий:

<navigation:Page (...) Title="Import">
<Grid x:Name="LayoutRoot">
    <ScrollViewer VerticalScrollBarVisibility="Auto" 
                  HorizontalScrollBarVisibility="Auto"
                  Visibility="{Binding Visible}">
        <c:BusyIndicator IsBusy="{Binding Busy}">
            <StackPanel>
                <StackPanel>
                    <Button/>
                </StackPanel>
                <Border Background="#c8c8c8" CornerRadius="5">
                    <sdk:DataGrid Name="myDataGrid" AutoGenerateColumns="False"
                                  ItemsSource="{Binding Imports}" Margin="10" IsReadOnly="True">
                        <sdk:DataGrid.Columns>
                            <sdk:DataGridTextColumn Header="ID" Binding="{Binding ID}" Width=".3*"/>
                            <sdk:DataGridTextColumn Header="Name" Binding="{Binding Name}" Width=".7*"/>
                        </sdk:DataGrid.Columns>
                    </sdk:DataGrid>
                </Border>
            </StackPanel>
        </c:BusyIndicator>
    </ScrollViewer>        
</Grid>
</navigation:Page>

Я пытаюсь добиться того, чтобы DataGird всегда имел максимально возможную ширину и высоту.Это также должно иметь минимальную ширину и фиксированную высоту.Когда браузер меньше, чем DataGrid, ScrollViewer должен включить прокрутку.Я думал, что свойства Min / Max Width / Height позволят такое поведение, но я не могу заставить его работать.

1 Ответ

0 голосов
/ 17 сентября 2011

Нужно немного поменять разметку.

StackPanel растёт до всего содержимого и не дает полосе прокрутки быть видимой.Содержимое элемента сетки перекрывается, если вы установите одно значение в Grid.Row.Это полезно, когда вы устанавливаете busyindicator выше содержимого.

<navigation:Page xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk"  x:Class="SilverlightApplication1.Page1" 
       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"
       xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
             xmlns:Controls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" d:DesignWidth="640" d:DesignHeight="480"
       Title="Page1 Page">
<Grid x:Name="LayoutRoot">
    <Grid.RowDefinitions>
        <RowDefinition MinHeight="150"/>
    </Grid.RowDefinitions>
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="40"/>
            <RowDefinition Height="*"/>
        </Grid.RowDefinitions>
        <Button Grid.Row="0"/>
        <Border Grid.Row="1" Background="#c8c8c8" CornerRadius="5">
            <sdk:DataGrid Name="myDataGrid" AutoGenerateColumns="False"
                                  ItemsSource="{Binding Imports}" Margin="10" IsReadOnly="True">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn Header="ID" Binding="{Binding ID}" Width=".3*"/>
                    <sdk:DataGridTextColumn Header="Name" Binding="{Binding Name}" Width=".7*"/>
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>
        </Border>
    </Grid>
    <Controls:BusyIndicator IsBusy="{Binding Busy}" VerticalAlignment="Center" HorizontalAlignment="Center" />
</Grid></navigation:Page>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...