Build 2014 – Day 1 keynote

For the last couple years it has been a tradition that I capture a stream of consciousness as I watch the big Microsoft keynote announcements at Build, PDC, TechEd North America. I enjoy doing it so that my work colleagues are able to catch up on the news as soon as they wake up in Australia, and for anyone else that wants an overview of the keynote without needing to dedicate hours watching it.

As I am live blogging it, the post is a stream of text and screen captures as they happened in real time. I have added additional links and a summary below as the highlights:

Highlights

The entire conference & screenshots are continued below

Continue reading

Advertisements

Easy to use icons in Windows 8 applications by using Segoe UI Symbol font

When creating your “Windows Modern Style UI applications” (read: Metro), one difficult aspect of the creation can be finding great icons to help keep a consistent look.

One little known trick is that Microsoft have already created a collection of icons that you can use in your applications. You simply need to use the “Segoe UI Symbol” font and know the character code for the icon.
An additional advantage of using an icon font, is that the icons are vector based and will scale crisply.

To browse the icons that are available open the Character map (search for it on the start screen). Change the font to Segoe UI Symbol, then scroll to the bottom for the really good ones.
Take note of the hex value of the character you want (E0EB in the sample image below).

image

 

From within your Windows 8 application, set the FontFamily to “Segoe UI Symbol”. Then tell the XAML that you are using the hex value of a character by putting it in the format ᄑ  The ampersand escapes the string, the #x defines it as a hex value, the semicolon then closes the character escape off.

So our aeroplane icon would be defined in XAML like this: 
The full line of XAML would be: <TextBlock FontSize="72" FontFamily="Segoe UI Symbol" Text="" />

The screenshot below shows the icons being displayed in the Visual Studio designer.

image

Start exploring with the character map, you may save yourself a heap of time by using the predefined icons Microsoft have created!

Reblogged from my Infragistics blog

By David Burela

I’m speaking at DDD Sydney

The “Developer Developer Developer” conferences have consistently been a great event. If you are in Sydney be sure to purchase your ticket and come this weekend! It is only $25 for a full day of talks, food & giveaways.

http://www.dddsydney.com

I’m also proud to say that I’ll be speaking this year on Windows 8 Development 101: The basics of XAML and ViewModels
The Windows 8 platform will soon allow people to build “Metro style applications” and sell them on the Windows Marketplace.
Join David Burela as he takes anyone who is new to Desktop development through the basics of developing for Windows 8. XAML, Databinding, DataTemplates and ViewModels will all be introduced.
Discover how to separate your UI from your business logic, how to create List Views that display your data richly, plus much more.
The techniques here can be applied to any XAML based application: WinRT, WP7, WPF, SL5.

By David Burela

Background tasks in Windows 8 failing instantly

I have seen an instance where trying to instantiate a background task in Windows 8 results in it failing instantly, or throwing an UnauthorizedAccessException.

This happens when you have put the task is in a 2nd project whose build output is set to Class Library. Simply go into the project settings, and change the Output type to WinMD file.

image

By David Burela

My notes from the Windows Phone 8 announcement

Note: the first few screenshots were low quality, the later images are fine once the connection improved. I’ll update the images once the session is downloadable

Summary

(click to read more)

Windows 8 demo–Updating application tiles

I have had requests to share the Windows 8 demos that I gave at the Windows 8 Developer camp. The source code is available on Github at https://github.com/DavidBurela/Win8Demo-Tiles

Text tile

Application tiles in your application can be updated by sending a formatted XML message to the TileUpdateManager. The easiest way to achieve this is to get a base template for the tile style that you want (Text only, Image, Image and Text, etc) then modifying the Text or Image elements of the template. The code below shows how a XML template can be taken and updated with custom text. The XML document is then used to create a TileNoficitacion which is then sent to the TileUpdateManager.

/// <summary>
/// Set the application's tile to display text content.
/// After clicking, go back to the start screen to watch your application's tile update.
/// </summary>
private void SetTileTextButtonClick(object sender, RoutedEventArgs e)
{
    // Tiles use a predefined set of standard templates to display their content.
    // The updates happen by sending a XML fragment to the Tile update manager.
    // To make things easier, we will get the template for a square tile with text as a base, and modify it from there
    var tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareText01);

    // Find the 'text' element in the template's XML, and insert the text "Hi :-)" into it.
    var elements = tileXml.GetElementsByTagName("text");
    elements[0].AppendChild(tileXml.CreateTextNode("Hi :-)"));

    // Create a TileNotification from our XML, and send it to the Tile update manager
    var tileNotification = new TileNotification(tileXml);
    TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);
}

Image tile from local image file

It is also possible to create the XML from scratch and send it to the TileUpdateManager. The code below updates the application tile with an image tile. It starts by instantiating a XmlDocument, creating each of the XML elements, and then chaining the elements together to form the final XML document. The path to the image is given as being a local application resource through the convention ms-appx:///Assets/DemoImage.png

/// <summary>
/// Set the application's tile to display a local image file.
/// After clicking, go back to the start screen to watch your application's tile update.
/// </summary>
private void SetTileImageButtonClick(object sender, RoutedEventArgs e)
{
    // It is possible to start from an existing template and modify what is needed.
    // Alternatively you can construct the XML from scratch.
    var tileXml = new XmlDocument();
    var title = tileXml.CreateElement("title");
    var visual = tileXml.CreateElement("visual");
    visual.SetAttribute("version", "1");
    visual.SetAttribute("lang", "en-US");

    // The template is set to be a TileSquareImage. This tells the tile update manager what to expect next.
    var binding = tileXml.CreateElement("binding");
    binding.SetAttribute("template", "TileSquareImage");
    // An image element is then created under the TileSquareImage XML node. The path to the image is specified
    var image = tileXml.CreateElement("image");
    image.SetAttribute("id", "1");
    image.SetAttribute("src", @"ms-appx:///Assets/DemoImage.png");

    // All the XML elements are chained up together.
    title.AppendChild(visual);
    visual.AppendChild(binding);
    binding.AppendChild(image);
    tileXml.AppendChild(title);

    // The XML is used to create a new TileNotification which is then sent to the TileUpdateManager
    var tileNotification = new TileNotification(tileXml);
    TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);
}

Image tile from remote image

A remote image can be used by again using a template (or hand crafting the XML from scratch as in the previous example), but this time providing a URI to an image hosted on a remote web server, rather than a local application resource.

/// <summary>
/// Set the application's tile to display a remote image on the internet.
/// After clicking, go back to the start screen to watch your application's tile update.
/// </summary>
private void SetTileRemoteImageButtonClick(object sender, RoutedEventArgs e)
{
    var tileXml = TileUpdateManager.GetTemplateContent(TileTemplateType.TileSquareImage);

    // Find the 'image' element in the template's XML. Change the src attribute to a remote URL
    var elements = tileXml.GetElementsByTagName("image");
    var imageElement = elements[0] as XmlElement;
    imageElement.SetAttribute("src", @"http://i.microsoft.com/global/en-us/homepage/PublishingImages/sprites/microsoft.png");

    // Create a TileNotification from our XML, and send it to the Tile update manager
    var tileNotification = new TileNotification(tileXml);
    TileUpdateManager.CreateTileUpdaterForApplication().Update(tileNotification);
}

Again, this source code is available as a working example on Github at https://github.com/DavidBurela/Win8Demo-Tiles By David Burela

XDDN around Australia

To try and streamline the XDDN groups around Australia, I have been working with the organisers of the other cities to create a few central locations for everything.
For those unfamiliar with XDDN, it is a usergroup I run that focuses on UX, Design and Development on Microsoft UI platforms. Such as Win8, WinPhone7, HTML5, etc.

The main reason for moving everything to Meetup is that it allows everyone to easily see upcoming events and get automatically notified when new events are created.
Having XDDN on Meetup.com also supports my other goals of getting more people involved with their local development communities. Joining the groups will allow you to easily find other local groups that you may want to attend, such as Agile or Alt.Net groups.
Please join the group for your city, as the old event sites (such as EventBrite) will be slowly decommissioned over the next few weeks.