有一个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行)看到了大的“空”空间,这是留作控制的。
我试图降低主持Silverlight应用程序的DIV的高度 - 这会切断对“大数据”案例的控制。尝试将样式“高度”设置为“自动”会导致空HTML页面(根本看不到Silverlight控件)。
请问您如何设置页面高度以便自动拉伸以适应整个控件?
我不确定这是Silverlight问题还是HTML ...
谢谢!
答案 0 :(得分:0)
最好先将HTML Silverlight大小调整问题与所有其他布局问题分开。
除非为其他HTML元素预留空间,否则您的Silverlight对象应占用浏览器高度和宽度的100%。这样,所有布局和间距都受Silverlight对象的控制。
只有当您希望Silverlight对象大于浏览器并使用浏览器滚动条(不推荐)时,才会执行此操作。如果您使Silverlight对象小于浏览器,则会丢失浏览器未使用区域上的任何鼠标交互,否则您可能会执行某些操作。再次100%是最容易使用的。
除了HTML之外,你能提供更多的XAML(截图或简单的模型在Paint中很棒),所以我可以让你知道你需要什么类型的布局和间距你的特定屏幕?