Заполнение окна браузера с помощью приложения Silverlight

Я хочу, чтобы приложение Silverlight заполнило все окно браузера. Я установил ширину и высоту объекта плагина на 100% и установил высоту и ширину контейнера LayoutRoot в Auto, но все равно не повезло. Любые предложения?

<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>

Отказ от ответственности: Сначала я искал ответ, нахожу этот поток. Однако, как вы можете видеть по моему коду, который не работает для меня.

Ответы

Ответ 1

Во-первых, я не устанавливаю высоту/ширину в пользовательском элементе управления. Вместо этого я устанавливаю 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 я установил Height и Width на 100%, как это...

<div style="height: 100%; width: 100%; position: fixed;">
        <asp:Silverlight runat="server" Source="~/ClientBin/My.xap" ID="MyId" 
            Width="100%" Height="100%" />
</div>

В этот момент все работает для меня, чтобы оно заняло все окно.

Ответ 2

Измените атрибуты Height и Width:

<UserControl
     x:Class="Client.Page"
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

Авто высота и ширина с изменением размера окна в соответствии с содержимым. Если вы удалите атрибуты Height и Width, ваше приложение Silverlight будет расти в соответствии с окном.

Ответ 3

Хм

Я думаю, что ваша сетка настроена как можно меньше (нет столбца или строки "звезды" ). Можете ли вы попробовать еще один столбец и строку со "звездным" размером?

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

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

Ответ 4

Если у вас довольно сложная компоновка HTML и не может полагаться на фиксированное позиционирование, вы можете изменить размер div #silverlightControlHost, используя следующее:

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-версия HTML по умолчанию предоставляет

<UserControl ...
    VerticalAlignment="Stretch"
    Height="Auto"
    Width="Auto">

Я не тестировал его без этих настроек, насколько я знаю, Авто по умолчанию.