by Wojciech Sura

Theme-aware resources in Windows Phone

Windows Phone supports two themes: light and dark. Since UI in this ecosystem is quite… say, minimalistic, the first theme can be described as “black on white” and the second as “white on black”.

The most common way to design appearance of your application is to use predefined resources, which are provided by the system. For instance, to create text in a frame with default theme colors, write:

[xml]<Border Margin="4" BorderBrush="{ThemeResource PhoneForegroundBrush}"
BorderThickness="{ThemeResource ButtonBorderThemeThickness}"
Background="{ThemeResource PhoneBackgroundBrush}">
<TextBlock Foreground="{ThemeResource PhoneForegroundBrush}"
FontSize="{ThemeResource TextStyleExtraLargePlusFontSize}">Themed manually</TextBlock>
</Border>[/xml]

The border will match current theme color:

lightdark

But what if you want to introduce your own styles to application, but still match current theme?

The solution is to create different ResourceDictionary objects for light and dark scheme and then to import them in special way to your page:

[xml]<Page.Resources>
<ResourceDictionary>
<ResourceDictionary.ThemeDictionaries>
<ResourceDictionary x:Key="Light" Source="Light.xaml" />
<ResourceDictionary x:Key="Dark" Source="Dark.xaml" />
</ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>
</Page.Resources>[/xml]

The phone will now choose appropriate resource file, depending on current theme. Remember to use ThemeResource instead of StaticResource though, such that when theme changes all relevant values will be reloaded from appropriate ResourceDictionary.

by Wojciech Sura

Event-to-command in Windows Phone

During writing my Windows Phone application I ran into a problem: I wanted the button to behave differently, depending on whether user tapped it or pressed-and-held.

Most XAML controls provide a Holding event, which occurs when user keeps touching an item – so the solution seems to be as simple as implementing an event.

But that doesn’t look nice in XAML – most actions can be implemented declaratively – as bindings to commands in the viewmodel. Implementation of event in code-behind seems like a code smell in this beautiful MVVM environment.

There’s a solution though – to use Behaviors SDK.

First of all, add Behaviors SDK (XAML) to your project references – you may find it among few assemblies, which Microsoft provides as optional ones for Windows Phone applications.

Then – as usual – you’ll have to define XML namespaces for two additional C# namespaces:

[xml]<Page

xmlns:i="using:Microsoft.Xaml.Interactivity"
xmlns:icore="using:Microsoft.Xaml.Interactions.Core">[/xml]

Finally, you may add a behavior and action to the button:

[xml]<Button Command="{Binding TapCommand}">
<i:Interaction.Behaviors>
<icore:EventTriggerBehavior EventName="Holding">
<icore:InvokeCommandAction Command="{Binding HoldingCommand}" />
</icore:EventTriggerBehavior>
</i:Interaction.Behaviors>
Press or hold me
</Button>[/xml]

Remember though, that after HoldingCommand, the TapCommand will fire as well. Make sure to implement it properly.

by Stian

The [NeutralResourceLanguage] attribute is missing on the entry assembly

When trying to submit a new application or update an older (pre-mango) application in the Windows Phone marketplace / AppHub, you may get the unpleasant surprise of an error saying “The [NeutralResourceLanguage] attribute is missing on the entry assembly”

This is due to a new requirement that came around the launch of Mango. All applications must now have a natural resource language specified (will allow the new languages that came with Mango to work correctly).

There is an easy way to fix this, I will give you two ways it can be accomplished:

ATIV-S-Product-Image-Front-5-600x399Option #1

Update your Assembly.cs:

// Add this to you usings
using System.Resources;

// Then add this line in the code
[assembly: NeutralResourcesLanguageAttribute("en")]
Option #2

Follow these steps:

  1. Right click the project name in Solution Explorer and click Properties
  2. Under the Application tab, click the Addembly Information button
  3. Select the default culture in the Neutral Language list
by Stian

Use computer keyboard in Windows Phone emulator

WindowsPhone7EmulatorIf you spend lots of time in the Windows Phone emulator you may have noticed that you need to type using the SIP (soft input panel) because your computer keyboard is disabled. There is not visible settings anywhere on how to change this, but luckily I got a tip from my fellow developer Christoffer that this could easily be fixed by doing the following.

  1. Set focus to an input field
  2. Press the  PageUp button

Then SIP will now collapse and you’ll see ENU in the top bar. You can now use your keyboard to write in any input in the application.

If you would like to get the SIP back, just set focus to an input field again and press the Pause/Break button – hey, it’s back! (you probably didn’t miss it?)

Hardware buttons

Hardware buttons of the phone can also be triggered by your keyboard. See the following table

F1 Back
F2 Start
F3 Search
F6 Camera pressed half way
F7 Camera pressed fully
F9 Volume Up
F10 Volume Down
by Stian

HTC sin Windows Phone 7

Video av det som sannsynligvis er  HTC sin kommende versjon av Windows Phone 7

httpvh://www.youtube.com/watch?v=-Oi6ENRvSNM

Listen over applikasjoner som er oppdaget er som følger:

Weather – we have all see this visually stunning app.
Calculator – a simple calculator in portrait and scientific calculator in landscape
Connection Setup – useful when roaming onto another network
Converter – a simple unit convertor
Flashlight – we know this one
List – a simple lists app.
Love – included in EVERY Windows Phone 7 device!
Notes – the visually stunning notes app.
Photo Enhancer – the ability to add simple effects to pictures
Sound Enhancer – enable SRS WOW or Dolby Mobile on your device.
Stocks – a nice stocks app.

Greit å vite for oss som allerede har utviklet noen av disse applikasjonen for det kommende operativsystemet! (trashed!)

by Andreas

Windows Phone

Sannsynligvis en gang før jul lanseres den nye Marketplace, Microsofts alternativ til Apples gigantsuksess App Store. Dette skjer naturligvis i sammenheng med lansering av det nye OS’et for mobil, Windows Phone.

Windows Phone er bygget helt fra grunnen og har lite eller ingenting til felles med det gamle Windows Mobile 6.x. Microsoft har tydelig beveget seg mer mot en lukket plattform, men i motsetning til Apple som selv produserer hardwaren skal Phone kunne kjøre på et utall enheter fra forskjellige produsenter som HTC, Motorola, LG osv. Det har derfor blitt definert en del krav som stilles før en produsent kan stemple sin enhet som “Windows Phone”-godkjent. Disse innebærer minimumskrav til CPU, minne, kamera, skjermkort og andre komponenter (komplett liste: http://www.techautos.com/2010/03/17/windows-phone-7-series-hardware-requirements/ ). På denne måten forsikrer de seg om at brukeropplevelsen holder en viss standard (WM 6.x hadde ikke disse kravene, og resultatet av det kjenner mange til..).

Marketplace er som sagt Microsofts alternativ til App Store. Marketplace eksisterer allerede i dag og er en kanal for salg av applikasjoner til WM, men utvalget av applikasjoner er svært begrenset og helt i skyggen av Apples pengemaskin. Måten Microsoft skal ta sin del av dette markedet på er å tilby mye av det samme konseptet, men gjøre verktøyene mer tilgjengelige og fleksible. Pr i dag må en applikasjon for iPhone utvikles på en Mac, mens de fleste utviklere (den får skyte meg den som mener det motsatte) fortsatt sitter på en Windows-maskin. I tillegg kommer integreringen med Visual Studio, Expression Blend og de andre verktøyene til Microsoft gjøre det enkelt for de aller fleste med litt bakgrunn i enten koding eller design å lage sin første applikasjon for Phone-plattformen. Om dette er nok til å ta igjen forspranget til Apple vil tiden vise, men for oss som har begynt å se litt på denne teknologien er det ikke tvil om at Steve Jobs bør legge noen strategier for at ikke “menigheten” hans skal begynne å miste alt for mange medlemmer fra 2011 og utover.

Microsoft har i år sendt sine “evangelister” rundt omkring i verden for å promotere Phone for utviklere for på denne måten sørge for at Marketplace skal ha et rikt innhold av applikasjoner den dagen Phone lanseres. De har derfor lagt ut en toolkit som kan lastes ned gratis (desverre fungerer dette ikke med Visual Studio 2010 enda, men installeres som en egen Visual Studio Express For Windows Phone), pluss en del eksempelkode og et forum for å skape en community på et så tidlig statium som mulig. Developer tools kan lastes ned her: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=cabcd5ed-7dfc-4731-9d7e-3220603cad14 mens hjelp til å komme i gang finnes her: http://msdn.microsoft.com/en-us/library/ff402535%28VS.92%29.aspx

Oppdatering: Nå har den endelige versjonen av Developer Tools blitt sluppet!

For de som lurer på den økonomiske siden ved Marketplace så melder Microsoft at det blir i henhold til “industry standard” (jepp.. styrt av Apple): 70/30, hvor brorparten går til utvikler. På spørsmål fra salen om hvordan fordelingen ser ut for applikasjoner som er gratis (folk spør om det mest utrolige) sjekket foredragsholder dette opp nøye og svarte tilbake at “joda, samme gjelder for gratis-applikasjoner”…

I VG kan du lese om hvordan Steve Ballmer skal bekjempe iPhone med Windows Phone. Se vg.no

http://blog.degree.no/2010/09/windows-phone-7-developer-tools-released/