我想知道如何使AppBarButton Icon有2行文本。我希望像在Windows日历中一样:
答案 0 :(得分:2)
AppBarButton不会在其Icon中显示文本或任意Xaml。它必须是字体,位图或路径的符号。对于像这样的日历显示,您最好使用位图。
由于您可能不想预生成366个图标,因此您可以使用RenderTargetBitmap动态创建它们。假设“ButtonImageMaster”是带有日期和月份的Xaml片段,而calendarButton是AppBarButton:
RenderTargetBitmap rtb = new RenderTargetBitmap();
await rtb.RenderAsync(ButtonImageMaster);
IBuffer pixelBuffer = await rtb.GetPixelsAsync();
string fileName = "calIcon.png";
StorageFile calIconFile = await ApplicationData.Current.TemporaryFolder.CreateFileAsync(fileName,CreationCollisionOption.ReplaceExisting);
using (IRandomAccessStream stream = await calIconFile.OpenAsync(FileAccessMode.ReadWrite))
{
BitmapEncoder encoder = await BitmapEncoder.CreateAsync(BitmapEncoder.PngEncoderId, stream);
encoder.SetPixelData(
BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Straight,
(uint)rtb.PixelWidth,
(uint)rtb.PixelHeight,
DisplayInformation.GetForCurrentView().LogicalDpi,
DisplayInformation.GetForCurrentView().LogicalDpi,
pixelBuffer.ToArray());
await encoder.FlushAsync();
}
BitmapIcon icon = new BitmapIcon();
icon.UriSource = new Uri("ms-appdata:///temp/"+fileName);
calendarButton.Icon = icon;
答案 1 :(得分:0)
在WP 8.1 Silverlight上,您可以使用WriteableBitmap(FrameworkElement element, Transform transform)
的{{1}}构造函数(派生自WriteableBitmap
)来生成内存渲染框架元素的屏幕截图&#39 ;。然后,您可以将其设置为位图图标。