Заполнение окна браузера приложением Silverlight - PullRequest
14 голосов
/ 07 апреля 2009

Я хочу, чтобы мое приложение 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>

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

Ответы [ 4 ]

18 голосов
/ 07 апреля 2009

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

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

0 голосов
/ 20 мая 2010

Если у вас довольно сложный 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.

0 голосов
/ 07 апреля 2009

Хм

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

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

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

0 голосов
/ 07 апреля 2009

Удалите атрибуты высоты и ширины из:

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

Авто Высота и Ширина с изменением размера окна, чтобы соответствовать содержанию. Если вы удалите атрибуты «Высота» и «Ширина», приложение Silverlight вырастет до размера окна.

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