Monday, February 24, 2014

Swapped a ListBox for a LongListSelector and now the items don't show?

If you're not too distracted by all the announcements coming from MWC at the moment I thought I'd share this little gotcha that cost me more time than it should have.

I'm updating an app for a client at the moment and for one of the visual tweaks that I wanted to add meant I wanted to replace a ListBox with a LongListSelector.
All should be simple enough. It should just be a case of replacing this:

<ListBox ItemsSource="{Binding Sessions}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            // ...
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>


with this:

<phone:LongListSelector ItemsSource="{Binding Sessions}">
    <phone:LongListSelector.ItemTemplate>
        <DataTemplate>
            // ...
        </DataTemplate>
    </phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>

All seemed good but then no items were shown on the page.
Huh!?
Why?!

Well, it turns out that in the ViewModel the Sessions property was an IEnumerable<Session>.
For the LongListSelector to be able to load the items it needs the NotifyPropertyChanged events to be raised. The easiest way to do this was to change the Sessions property to be an ObservableCollection<Session>. This way the necessary events are raised and content is displayed. :)

Obvious really.
Hopefully this reminder will save someone else some head scratching in future.


Sunday, February 16, 2014

The Windows Phone app store is full of apps, but also full of possibilities

Over on the DVLUP blog they've just announced that they've given away design and UX consultations to 30 apps in the store.


While that's all well and good this phrase caught my eye:
"popular apps with many positive reviews and good ratings are not necessarily doing well because of a great UX or design, but because they are functionally really good and are addressing real user scenarios!"
For the apps which will benefit from the consultations this is obviously a good thing but it highlights an opportunity for other developers.

What this says (or rather reminds me) is that competition isn't a bad thing. Just because there's already a successful app in the store that does the same thing as you want to build an app to do, it doesn't mean you shouldn't. If you can provide a better user experience.
A brief look through the store shows a lot of apps which display very little effort has been spent on creating a high quality user experience. Many of these apps are successful because they were functional and in the store first. They may get updated with a better UX. If not, that a great opportunity to compete against them. If you can do the same thing functionally but provide a better experience, the fact that you weren't first won't be an issue for long.


Monday, February 10, 2014

An app developers guide to patent demand letters

My normal blogging activities are on hold at the moment while I try and prioritise some long overdue projects. I did think, however, that it was worth breaking my temporary silence to draw your attention to some great resources around software patents.

This is all prompted by a recent show on .Net Rocks about Software Patents with Jonathan Zuck. It's definitely worth a listen.

It also points to an excellent infograpic on demand letters from the Association of Competitive Technologies (ACT). If you're building apps it's definitely worth your time to look it over.