Значок Windows Phone 8.1 AppBarButton с двумя строками текста

Я хотел бы знать, как сделать значок AppBarButton иметь 2 строки текста. Я хочу сделать это как в календаре Windows:

изображение


person Vil    schedule 03.10.2014    source источник


Ответы (2)


AppBarButton не отображает текст или произвольный код 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;
person Rob Caplan - MSFT    schedule 03.10.2014
comment
Я хотел попробовать это в своем приложении Silverlight 8.1, но не похоже, что Silverlight поддерживает RenderTargetBitmap. Есть ли другие способы сделать это? - person Michael Sabin; 26.11.2014
comment
Код рендеринга работает хорошо, но когда я пытаюсь отобразить его как AppBarButton.Icon, я получаю следующее: i.imgur. com/de73cTo.png . Любая идея, как я могу это исправить? - person Vil; 03.02.2015
comment
код обновлен. Телефон требует, чтобы UriSource BitmapIcon был URI протокола ms, а не необработанным путем. - person Rob Caplan - MSFT; 13.02.2015

В WP 8.1 Silverlight вы можете использовать конструктор WriteableBitmap(FrameworkElement element, Transform transform) из WriteableBitmap (который является производным от ImageSource) для создания «снимка экрана элемента структуры, визуализируемого в памяти». Затем вы можете установить его на растровый значок.

person Oleksandr Zolotarov    schedule 26.11.2014