0

やりたいことを正確に実行する素敵な Silverlight コントロールを作成しました。見栄えも良いです :) テスト プロジェクトの ASPX サンプル ファイルまたは HTML サンプル ファイルでそれをホストすると、うまく表示されます。

今では、派手なデザインの既存の ASP.NET 2.0 プロジェクトでコントロールを使用する必要があります。私が抱えている問題は、コントロールが正確に表示されないことです:

  • 読み込みの進行状況が表示されない
  • 通常、コントロールが含まれているアリアの上にマウスを移動するまで、コントロールは表示されません。

明らかに、これは私の HTML/CSS 設計に起因するものですが、問題を見つけるには非常に時間がかかります。この分野の知識を持っている人はいますか? コントロールが正しく表示されるようにするためのルールは何ですか? どの CSS プロパティを使用する必要がありますか?

PS: 私は 2.0 アプリを持っているので、Silverlight に対してオブジェクト タグ アプローチを使用しています。これは、高さと幅がスタイルで設定された DIV に含まれています。

コード スニペットが要求されました。これは次のようなものです (基本的には、Silverlight テスト プロジェクト (完全に動作する) からの HTML テスト ページのコピーです):

<div id="silverlightControlHost" style="height: 300px; width: 750px;">
    <object data="data:application/x-silverlight," type="application/x-silverlight-2-b2"
    width="100%" height="100%">
    <param name="source" value="Contiki.SilverLight.FileUploader.xap" />
    <param name="onerror" value="onSilverlightError" />
    <param name="background" value="white" />                            
    <a href="http://go.microsoft.com/fwlink/?LinkID=115261" style="text-decoration: none;">
        <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight"
        style="border-style: none" />
    </a>
    </object>
    <iframe style='visibility: hidden; height: 0; width: 0; border: 0px'></iframe>
</div>

この DIV はテーブルのセルに含まれており、これも大きな設計の一部です。前述のように、CSS はたくさんあります。これが役立つかどうかわからない...

4

4 に答える 4

3

原因は自分で見つけた...

コントロールを HTML テーブルに配置すると、Silverlight に表示上の問題があることがわかりました。これに関する情報は、silverlight フォーラム で見つけました。beta2のことでしたが、リリース版にアップグレードしましたが、まだ問題があります。

これを試して。Silverlight コントロールを含むテーブルに高さと幅を追加します。コントロールを含む TD 内に 1 文字の空白を追加することもできます。

基本的に、テーブルがレンダリングされたとき、コンテンツのサイズを「見る」ことができなかったため、まったくレンダリングされなかったか、単一の空白文字のサイズにしかレンダリングされませんでした。

-- ジョン・ストックトン

私の設計は入れ子になったテーブルで非常に複雑なので、実際にはまだ機能させることができませんでした。

アップデート:

私が最終的に実装した実際の修正は、含まれている <DIV> を「更新」する小さな JavaScript でした。ここにあります:

<script type="text/javascript">
    function refreshSL()
    {
        var div = document.getElementById('silverlightControlHost');
        div.style.display = 'block';
    }
    refreshSL();
</script>

これを HTML の実際の SL マークアップの下に配置すると、機能しました (ページの読み込みイベントで呼び出すのが適切だと思います。

于 2008-10-22T13:10:41.907 に答える
0

私はまったく同じ問題を抱えていて、それが私を怒らせていました。問題はInternetExplorerに限定されていました。他のすべてのブラウザ(Operaも含む)で正常に動作します。

あなたの解決策は確かにハックです。これは実際にはIEのバグの回避策であるため、正式に回避することができます。

技術的には、レイアウトにテーブルを使用するべきではありませんが、現実の世界では、ブラウザ間で一貫して動作させる唯一の方法です。

于 2009-04-12T02:54:29.010 に答える
0

CSS の問題は、デバッグが難しい場合があります。異なるブラウザでも動作は同じですか? あなたの CSS はどこでも "float" を使用していますか? アプリは、テーブルの外側と div の外側の同じページで正しく動作しますか?

于 2008-10-01T16:08:16.443 に答える
0

As Adam says, CSS issues are a real PITA. Typically when I run into something like this I start by pointing to a blank CSS instead of the "fancy" one and then start adding the styles back in until I'm able to reproduce the issue.

于 2008-10-02T16:37:48.580 に答える