Сетка Silverlight - простирается на родителей, размер контейнера, но не расширяется, чтобы разместить детей - PullRequest
1 голос
/ 22 июня 2011

Есть ли способ сделать сетку silverlight / wpf растянутой до ее родительской ширины / высоты (используя авто), но не расширять для размещения дочерних элементов? В приложении Silverlight у меня есть следующее:

Главная страница с рамкой:

<ScrollViewer x:Name="LayoutRoot" BorderThickness="0" Padding="0" ScrollViewer.HorizontalScrollBarVisibility="Auto" ScrollViewer.VerticalScrollBarVisibility="Auto">

    <Grid Background="White">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <Border Background="{StaticResource DefaultBackgroundBrush}" BorderBrush="{StaticResource DefaultBorderBrush}" BorderThickness="0,0,0,1">
            <!--Some header content-->
        </Border>
        <sdk:Frame x:Name="Frame" Grid.Row="1" UriMapper="{StaticResource UriMapper}" ContentLoader="{StaticResource ContentLoader}" BorderThickness="0" />
    </Grid>
</ScrollViewer>

В этом кадре я загружаю нужную страницу:

<navigation:Page 
       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"
       xmlns:navigation="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="MyNamespace.MyPage" mc:Ignorable="d"
       d:DesignWidth="640" d:DesignHeight="480"
        Title="{StaticResource PageTitle}">
<Grid x:Name="LayoutRoot">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition/>
        </Grid.RowDefinitions>
        <StackPanel d:LayoutOverrides="Width" Visibility="Collapsed">
            <!-- Some header content -->
        </StackPanel>
        <Grid Grid.Row="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto"/>
                <RowDefinition/>
            </Grid.RowDefinitions>
            <TextBlock TextWrapping="Wrap" Text="Titletext" FontSize="13.333" FontWeight="Bold" d:LayoutOverrides="Height"/>
            <RichTextBox BorderThickness="0" IsReadOnly="True" Background="{x:Null}" BorderBrush="{x:Null}" VerticalScrollBarVisibility="Auto" Grid.Row="1" Padding="0">
                <Paragraph><Run Text="Text that will force the grid to expand."/></Paragraph>
            </RichTextBox>
        </Grid>
    </Grid>
</Grid></navigation:Page>

Фрейм на главной странице предназначен для борьбы с переполнением контента (с помощью scrollviewer), поскольку у меня есть несколько страниц, которые требуют минимального размера.

Сетка, содержащая текстовое поле, растягивается до родительского элемента, но когда я помещаю большой текст внутри текстового поля, сетка изменяет размер до ширины текста, в результате чего появляется горизонтальная полоса прокрутки средства просмотра прокрутки кадра. Я ищу решение, которое не требует привязки максимального размера сетки к максимальному размеру ее родительского элемента (в любом случае в Silverlight это не будет работать без хаков, поскольку привязка к ActualWidth / Height содержит ошибки). Есть идеи?

1 Ответ

0 голосов
/ 20 июля 2011

Вы просто должны изменить упаковку, как уже опубликовано И изменить одно свойство ScrollViewer:

ScrollViewer.HorizontalScrollBarVisibility="Auto"

на

ScrollViewer.HorizontalScrollBarVisibility="Disabled"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...