我希望我的Silverlight应用程序填满整个浏览器窗口。我已将插件对象的宽度和高度设置为100%,并将我的LayoutRoot容器的高度和宽度设置为自动,但仍然没有运气。有什么建议吗?
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<asp:Silverlight ID="Silverlight1" runat="server"
Source="~/ClientBin/Client.xap"
MinimumVersion="2.0.30818.0"
AutoUpgrade="true"
Height="100%"
Width="100%">
</asp:Silverlight>
</form>
<UserControl
x:Class="Client.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="Auto"
Width="Auto">
<Grid
x:Name="LayoutRoot"
Background="#084E85"
ShowGridLines="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="280" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="80" />
<RowDefinition Height="Auto" />
<RowDefinition Height="600" />
</Grid.RowDefinitions>
...Remaining content here...
</Grid>
</UserControl>
免责声明:我首先搜索了一个答案,找到了this thread。但是,你可以通过我的代码看到这对我不起作用。
答案 0 :(得分:18)
首先,我没有在用户控件中设置高度/宽度。相反,我设置了DesignHeight和DesignWidth(在“http://schemas.microsoft.com/expression/blend/2008”命名空间中)并将对齐设置为拉伸
<UserControl ...
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
HorizontalAlignment="Stretch" VerticalAlignment="Stretch"
d:DesignHeight="1050" d:DesignWidth="1680">
在我的Html中,我将高度和宽度设置为100%......
<div style="height: 100%; width: 100%; position: fixed;">
<asp:Silverlight runat="server" Source="~/ClientBin/My.xap" ID="MyId"
Width="100%" Height="100%" />
</div>
那时,一切都适合我让它占据整个窗口。
答案 1 :(得分:0)
从:
中删除高度和宽度属性<UserControl
x:Class="Client.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
自动高度和宽度,调整窗口大小以适合内容。如果删除“高度”和“宽度”属性,Silverlight应用程序将增长到适合窗口。
答案 2 :(得分:0)
嗯
我认为您的网格设置尽可能小(没有“星形”列或行)。 您可以尝试使用“星号”大小的另一列和行吗?
正如其他人所指出的那样,您还需要删除“自动”尺寸,因为它们会自动调整大小为内容。
还尝试在页面上设置背景颜色,以便您看到它实际延伸的位置。
答案 3 :(得分:0)
如果你有一个相当复杂的HTML布局并且不能依赖固定定位,那么你可以使用以下内容调整#silverlightControlHost div的大小:
private bool _hasResized;
protected override Size ArrangeOverride(Size finalSize)
{
if (!_hasResized)
{
HtmlPage.Document.GetElementById("silverlightControlHost").SetStyleAttribute("height", finalSize.Height.ToString());
_hasResized = true;
}
return base.ArrangeOverride(finalSize);
}
您可以将其放在MainPage.cs
内,或者如果您嵌套UserControls
,则需要最高的控件。我也使用以下XAML和默认的HTML Visual Studio提供
<UserControl ...
VerticalAlignment="Stretch"
Height="Auto"
Width="Auto">
我没有在没有这些设置的情况下测试过,据我所知,Auto是默认设置。