0

我按照这里解释的方法为我的应用程序生成自定义的动态磁贴外观。

这种方法的唯一问题是您需要通过 c# 代码以编程方式构建整个控件集。

我尝试将用户控件添加到我的应用程序 (LiveTile.xaml) 并使用相同的方法,而不是添加所有 Rectangles 和 TextBlocks 我实例化了 UserControl 并将其呈现在位图上。

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

介意发布您的整个渲染程序吗?你至少需要打电话bitmap.Invalidate()

此外,您可能需要等待Control.Loaded事件,以确保您的 UserControl 上的所有 FrameworkElements 都已实际加载和呈现。

将 UserControl 渲染到早期,只会渲染 UserControl 元素本身,没有任何子元素(即黑色方块)

于 2011-10-29T12:44:45.037 回答
0

我也有这个问题。如果您正在使用 Backgroud 代理来更新您的动态磁贴,我不确定控件是否会加载或是否能够使用/排列其内容或呈现它们。

我将尝试等到 Load 事件被触发并尝试再次呈现控件。

于 2011-12-31T20:15:07.140 回答