Использование браузера ScrollBars для приложения Silverlight4 - PullRequest
0 голосов
/ 09 марта 2011

Я пытаюсь заставить мое приложение Silverlight вести себя как любое другое веб-приложение для макета.

Я подписался на эту ветку , которая показывает, как расширить приложение, чтобы заполнить доступное пространство, когда приложение занимает меньше места, чем окно клиента.

Однако я не могу найти код, который делает обратное. То есть, когда мое приложение становится больше, чем клиентская область браузера, я бы хотел, чтобы браузер отображал соответствующие полосы прокрутки. В настоящее время приведенный выше код просто обрезает приложение по размеру браузера.

Вот простой пример приложения:

<UserControl x:Class="SilverlightWidthAndHeight.MainPage"
    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"
             HorizontalAlignment="Stretch"
             VerticalAlignment="Stretch"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot"
          HorizontalAlignment="Stretch"
          VerticalAlignment="Stretch">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="*" />
            <RowDefinition Height="Auto" />
        </Grid.RowDefinitions>        

        <Rectangle Grid.Row="0"
                   Fill="Blue" />
        <TextBlock Grid.Row="0" 
                   Foreground="White"
                   FontSize="20"
                   FontWeight="Bold"
                   Margin="5"
                   Text="Header" />

        <Rectangle Grid.Row="1"
                   Fill="Red" />

        <StackPanel Grid.Row="1"
                        Orientation="Horizontal">
            <TextBlock x:Name="txtMiddleRow" 
                           Foreground="White"
                           FontSize="28"
                           Text="Middle Row" />

            <Button x:Name="btnGrow"
                        Content="Grow"
                        VerticalAlignment="Center"
                        Margin="5" />
        </StackPanel>


        <Rectangle Grid.Row="2"
                   Fill="Blue" />
        <TextBlock Grid.Row="2" 
                   Foreground="White"
                   FontSize="20"
                   FontWeight="Bold"
                   Margin="5"
                   Text="Footer" />

    </Grid>
</UserControl>

Как видите, он заполняет пространство соответствующим образом: Silverlight App Extended

Но если я нажму кнопку «Расти», чтобы увеличить размер шрифта TextBlock: Silverlight App Clipped

Я понимаю, что могу обернуть все в ScrollViewer, но похоже на такой взлом, когда полоса прокрутки находится слева от полосы прокрутки браузера.

Спасибо
WTS

1 Ответ

0 голосов
/ 09 марта 2011

То, что вы спрашиваете, это для серебряного света, чтобы изменить свой размер.Это займет много работы с вашей стороны.Вам нужно будет написать код, который будет знать, когда ваше приложение станет больше, и он будет масштабировать html-объект, содержащий ваше приложение silverlight.

Например, установите событие в корне layout для layout layout, а затем установите высотусвойство вашего приложения Silverlight из кода.Посмотрите, как манипулировать html и вызывать javascript из silverlight здесь .

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