Рендеринг "Пользовательский элемент управления" в файл изображения - PullRequest
0 голосов
/ 29 октября 2011

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

Единственная проблема этого подхода заключается в том, что вам нужно программно собрать весь набор элементов управления с помощью кода на C #.

Я попытался добавить пользовательский элемент управления в свое приложение (LiveTile.xaml) и к этому времени использовал тот же подход, вместо добавления всех прямоугольников и текстовых блоков, я создал экземпляр UserControl и отобразил его в растровом изображении.

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

НО: я больше не вижу ничего, отображаемого в растровом изображении. Изображение полностью остается черным (даже с очень очень простым xaml внутри пользовательского элемента управления).

Кто-нибудь знает, как этого можно достичь?

Что я тоже пробовал

  • вызов .UpdateLayout ()
  • вызов .Measure ();
  • вызов. Arrange ();
  • вызов .InvalidateMeasure ();
  • вызов .InvalidateArrange ();

ни один из них не влияет на вывод.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 октября 2011

Не могли бы вы опубликовать всю вашу процедуру рендеринга?Вам, как минимум, придется звонить bitmap.Invalidate().

Кроме того, вам может потребоваться дождаться события Control.Loaded, чтобы убедиться, что все FrameworkElements в вашем UserControl действительно загружены и обработаны.

Рендеринг UserControl на ранний период будет просто отображать сам элемент UserControl без каких-либо его дочерних элементов (т. Е. Черного квадрата)

0 голосов
/ 01 января 2012

У меня тоже есть эта проблема. Если вы используете агент Backgroud для обновления вашей живой плитки, я не уверен в том, что элемент управления загрузится или сможет использовать / распределить его содержимое или отобразить их.

Я попытаюсь подождать, пока не будет запущено событие Load, и попробую снова отобразить элементы управления.

...