Как включить автопрокрутку для страницы silverlight - PullRequest
0 голосов
/ 22 сентября 2010

Есть страница Silverlight, ее ширина 810 пикселей, высота не указана:

<NavigationControls:Page x:Class="VfmElitaSilverlightClientView.Pages.SquadView" 
       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:NavigationControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Navigation"
       xmlns:DataControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Data"
       xmlns:InputControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Input"
       xmlns:ToolkitControls="clr-namespace:System.Windows.Controls;assembly=System.Windows.Controls.Toolkit" 
       xmlns:Pages="clr-namespace:VfmElitaSilverlightClientView.Pages" 
       xmlns:Controls="clr-namespace:VfmElitaSilverlightClientView.Controls"
       xmlns:Converter="clr-namespace:SilverlightCommonView.Converter;assembly=SilverlightCommonView" 
       mc:Ignorable="d" Width="810"
       Title="SquadView Page">
<NavigationControls:Page.Resources>
    <Converter:BooleanToVisibilityConverter x:Key="resourceBooleanToVisibilityConverter" />
    <Converter:BooleanToVisibilityInvertedConverter x:Key="resourceBooleanToVisibilityInvertedConverter" />
</NavigationControls:Page.Resources>
<ToolkitControls:BusyIndicator IsBusy="{Binding IsBusy}" DisplayAfter="0" BusyContent="{Binding BusyContent}">
    <StackPanel Background="Transparent" HorizontalAlignment="Stretch">

        <StackPanel ... ></StackPanel>
        <StackPanel ... ></StackPanel>
        <StackPanel ... ></StackPanel>

        <StackPanel Orientation="Horizontal" HorizontalAlignment="Center">

            <Grid Margin="5" Width="500">...</Grid>

            <Canvas Height="180" Width="210">...</Canvas>

        <DataControls:DataGrid
                   IsReadOnly="True" HorizontalAlignment="Stretch" Margin="5" MinHeight="60" MaxHeight="460"
                   HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Auto"
                   RowHeight="18" VerticalAlignment="Top"
                   >
        </DataControls:DataGrid>

        <Button Content="Save" HorizontalAlignment="Center"
                Padding="10" Command="{Binding SaveButtonClickCommand,Mode=OneWay}"/>

    </StackPanel>
</ToolkitControls:BusyIndicator>

Страница отображается со следующим html-кодом:

<div id="silverlightControlHost" style="height:<%=Height%>px;margin: auto;">
    <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
      <param name="source" value="/ClientBin/app.xap"/>
      <param name="onError" value="onSilverlightError" />
      <param name="background" value="transparent" />
          <param name="windowless" value="true" />
      <param name="initParams" value="<%=InitParams %>" /> 
      <param name="minRuntimeVersion" value="3.0.40624.0" />
      <param name="autoUpgrade" value="true" />
      <a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40624.0" style="text-decoration:none">
          <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
      </a>
    </object>
    <iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>
</div>

Среди других элементов управления есть сетка внутри страницы, количество строк сетки зависит от данных (от 17 до 25-28), высота строки сетки составляет 22 пикселя.Необходимо отобразить все элементы управления и все строки сетки без прокрутки.

В моем примере значение свойства «Высота» для страницы установлено в «930».Для пользователей, у которых много данных (25-28 строк в сетке данных), большая часть страницы занята данными.Но другие пользователи (18-20 строк) видят большое «пустое» пространство, зарезервированное для элемента управления.

Я попытался уменьшить высоту для DIV, на котором размещено приложение Silverlight - которое отключило элементы управления для больших данных' дело.Попытка установить стиль 'height' в 'auto' приводит к пустой HTML-странице (элемент управления Silverlight вообще не виден).

Не могли бы вы посоветовать, как настроить высоту страницы, чтобы она автоматически растягивалась, чтобы соответствоватьвсе элементы управления?

Я не уверен, что это проблема Silverlight или HTML ...

Спасибо!

1 Ответ

0 голосов
/ 22 сентября 2010

Лучше всего сначала отделить проблему с размерами HTML Silverlight от всех других проблем с макетом.

Ваш объект Silverlight должен занимать 100% высоты и ширины браузера, если только вы не резервируете место для других элементов HTML. Таким образом, все расположение и интервалы находятся под контролем объектов Silverlight.

Единственный раз, когда вы этого не делаете, это когда вы хотите, чтобы объект Silverlight был больше, чем браузер, и использовали полосы прокрутки браузера (не рекомендуется). Если вы сделаете объект Silverlight меньше, чем браузер, вы потеряете любое взаимодействие с мышью в неиспользуемой области браузера, в противном случае вы могли бы что-то сделать. Опять же, с 100% проще всего работать.

Больше информации, пожалуйста:

Вместо HTML, вы можете предоставить больше ваших XAML ( скриншотов или простых макетов в Paint было бы здорово ), поэтому я могу сообщить вам точно, какой тип макета и интервал вам требуется конкретный экран?

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