14

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>

免責事項:私は最初に答えを検索し、このスレッドを見つけました。しかし、あなたが私のコードで見ることができるように、それは私のために働いていません。

4

4 に答える 4

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>

その時点で、ウィンドウ全体を取得するためにすべてが機能します。

于 2009-04-07T18:23:15.087 に答える
0

から 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 アプリケーションはウィンドウに合わせて大きくなります。

于 2009-04-07T18:22:35.057 に答える
0

うーん

あなたのグリッドはできるだけ小さく設定されていると思います(「星」の列や行はありません)。「星」サイズの列と行をもう 1 つ試していただけますか。

他の人が指摘したように、コンテンツに合わせて自動サイズ調整されるため、「自動」サイズも削除する必要があります。

また、ページの背景色を設定して、実際にどこまで広がっているかを確認してください。

于 2009-04-07T18:23:46.973 に答える
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 と Visual Studio が提供する既定の HTML を使用しています。

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

自動がデフォルトであることがわかっている限り、これらの設定なしでテストしたことはありません。

于 2010-05-20T14:04:12.763 に答える