Я хотел бы знать, как сделать значок AppBarButton иметь 2 строки текста. Я хочу сделать это как в календаре Windows:
Значок Windows Phone 8.1 AppBarButton с двумя строками текста
Ответы (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;
В WP 8.1 Silverlight вы можете использовать конструктор WriteableBitmap(FrameworkElement element, Transform transform)
из WriteableBitmap
(который является производным от ImageSource
) для создания «снимка экрана элемента структуры, визуализируемого в памяти». Затем вы можете установить его на растровый значок.