0

ここで説明するアプローチに従って、アプリケーション用にカスタマイズされたライブタイルの外観を生成しました。

このアプローチの唯一の問題は、c#コードを介してプログラムでコントロールのセット全体を構築する必要があることです。

アプリケーション(LiveTile.xaml)にユーザーコントロールを追加してみましたが、すべての長方形とテキストブロックを追加する代わりに、この時点で同じアプローチを使用しました。ユーザーコントロールをインスタンス化してビットマップにレンダリングしました。

var tileUserControl = new MyLiveTile(); // this internally has a simple 50x50 red grid
bitmap.Render(tileUserControl, new TranslateTransform());

しかし、ビットマップイメージにレンダリングされたものはもう表示されません。画像は完全に黒のままです(ユーザーコントロール内に非常に単純なxamlがある場合でも)。

誰かがこれをどのように達成できるか知っていますか?

私も試したこと

  • .UpdateLayout()の呼び出し
  • .Measure();を呼び出す
  • .Arrange();を呼び出す
  • .InvalidateMeasure();を呼び出します。
  • .InvalidateArrange();を呼び出します。

出力に影響を与えるものはないようです。

ありがとう。

4

2 に答える 2

2

Mind posting your entire rendering routine? You'll minimum have to call bitmap.Invalidate().

Also, you might need to wait for the Control.Loaded event, to ensure that all the FrameworkElements on your UserControl have actually been loaded and rendered.

Rendering the UserControl to early, will just render the UserControl element itself, without any of it's children (ie. a black square)

于 2011-10-29T12:44:45.037 に答える
0

私もこの問題を抱えています。バックグラウンド エージェントを使用してライブ タイルを更新している場合、コントロールが読み込まれるかどうか、またはそのコンテンツを使用/配置したりレンダリングしたりできるかどうかはわかりません。

Load イベントが発生するまで待ってから、コントロールのレンダリングを再試行します。

于 2011-12-31T20:15:07.140 に答える