Windows Phone 8.1 AppBarButton图标,包含2行文本

时间:2014-10-03 07:47:04

标签: winrt-xaml windows-phone-8.1 appbar

我想知道如何使AppBarButton Icon有2行文本。我希望像在Windows日历中一样:

image

2 个答案:

答案 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 ;。然后,您可以将其设置为位图图标。