MVVM and “restricted” functionality

So, I am back with a new post after WAY too long. It got really busy around TechEd Aus and NZ, and I really thought and hoped that I could get back and become active again as soon as that was over. Unfortunately, pushing work in front of you doesn’t really clear it…so when I finally got back from Auckland, I had a whole pile of things to do…

Anyhow…enough with the excuses…get to the topic already! So the topic is how to handle commanding with “restricted” functionality. There is two things in that sentence that I want to clarify. With commanding, I mean move functionality from the view into the viewmodel and removing as much code as possible from the code behind of the view. And with “restricted” functionality, I mean the type of functionality that cannot be handled anywhere but in the code behind of the view…

More...

Windows Phone 7 InputScope in Visual Studio and Blend

Lately I have been working a bit on a couple of Windows Phone 7 apps, and I found a couple of interesting things along the way. I am going to try to blog more frequently soon, and try to cover as much of the interesting stuff as I can find. But it will have to wait until after TechEd New Zealand. But if you happen to be going to TechEd Australia or New Zealand, don’t forget to come to one of my talks and say hi.

Anyhow, the funky problem I am going to write about today is around a feature called InputScopes. On the phone, you can configure your TextBoxes to use different InputScopes. The InputScope defines which of the different software keyboards to use when writing in the TextBox. This is a really cool feature as it helps the user to write the type of info he/she is supposed to provide. It can be things like numbers or currency or chat. Each InputScope results in a different keyboard. Or at least some of them do. There seems to be more InputScopes than cool keyboards at the moment though…

More...

Silverlight and non-IIS hosted WCF-services

I’m currently working on a kiosk application for a company called TicketDirect. They sell tickets to different events all around New Zealand and have decided to create a kiosk based solution where customers can buy tickets. The application needs to be Silverlight based for a couple of reasons, and must run Silverlight 3 as 4 doesn’t have a go-live license yet. The problem with this is that the application needs to talk to a credit/debit card unit as well as a ticket printer. The problem as you probably realize quickly, is that these units are connected to the computer physically and therefore are not available to Silverlight. And yeah…as you know, printing support is “limited” in Silverlight, so printing custom ticket layouts to a special ticket printer will not work…

This is how I solved it. I created a couple of WCF services to run locally on the machine and then had Silverlight connect to those to access the local system. The problem was that I did not want to run IIS on the local machines. Why? Well, for different reasons…such as the need for simple XCopy deployment. So the services would be hosted by a Windows application instead.

More...

Button “hacks”

After that somewhat useless title, let me explain. I’m currently working on a kiosk application in Silverlight (there will be more about it later). And while working with it I had two issues with the Button that comes with Silverlight. First of all, as with most controls, it swallows some of the events that I needed, and second it raises the Click event before the VisualStateManager takes the state back to Normal. The second one is very specific to my kiosk application, or at least to touch screen interfaces…so I wrote a couple of custom buttons to help me with these problems…

More...

OpenXML + Silverlight

I’m back again with another one of my interesting and insightful posts…or well…at least another post. Unfortunately, since it is quite a big subject, I will have to divide it in to two parts. This first part contains information about what OpenXML is and how to use Silverlight to creates office documents. While the second part will show the how to use the simple library I built to make it simpler.

For those of you who don’t know what OpenXML is, it is a standardized XML based format for storing Office type documents, which is used by MS Office as well as some other office packages. It is certified by ISO as well as ECMA. You can read a lot more about it at http://www.openxmldeveloper.org. Normally you work with it using the OpenXML SDK, but that is not available to Silverlight…yet at least…

I personally had very little experience in the format as such, until recently. Just before x-mas, I got assigned to a project at my company that opened my eyes to it though. I got the honorable task, together with another developer at our office (who actually did most of the work), to update the lab material on the OpenXML Deverloper site and make sure it worked with the upcoming Office 2010. After just a few slides about the standard, it dawned to me that it seemed like a pretty simple task to implement a small, but extensible, OpenXML library for Silverlight. So I did…

More...

Silverlight 3 multi-touch development 101 – pt 3 - Rotation

Welcome back for the 3rd part of the multi-touch 101 series. If you haven’t already read the previous parts I suggest that you do so as the code in the current part will build on top of the code from the previous parts. Part 1 is available here and part 2 here.

This part will cover the last type of gesture that the demo application uses – rotation. For me, the rotation is by far the most complicated thing to implement. Not because the code is very complicated, but because the math behind it isn’t that simple. Well…the math is actually not that complicated, but most of the developers I know are not big fans of trigonometry and thus couldn’t really help me out when I had questions. I even called up my dad who used to be a math teacher. But when I explained what I was trying to do, he just shook his head and wondered what I was talking about…But let’s get started.

More...

Silverlight 3 multi-touch development 101 – pt 2 - Zoom

I’m back with the second part of my series about multi-touch in Silverlight 3. This time I am going to tackle zoom, or pinch depending on who is talking. The zoom will be handled by pinching, but I prefer the term zoom for some reason. Go ahead! Flame me in the comments… :)

This part builds a lot on the previous part about Pan. So if you haven’t read it, I suggest you do so before reading any further… Otherwise, here we go!

More...

Silverlight 3 multi-touch development 101 – pt 1 - Pan

As I wrote in my previous blog post, I have wanted to try it out ever since I heard that it was available. But as I also mentioned, there has been a certain lack of access to multi-touch enabled devices. However, this is easily solved by using an iPod touch or iPhone, which is what I started out using. Unfortunately, that solution doesn’t really give you the right “feeling” as you are using it as a touchpad instead of actually “touching” the object.

Luckily, the nice Chris Auld went to PDC and got a multi-touch enabled laptop that he happily lent to me (unfortunately I believe he expects me to give it back at some point). And with this new toy, I got started… (If you are wondering what hardware I am actually using it, it is this. And I highly recommend it…)

More...

A couple of naming issues when working with Silverlight in Visual Studio 2008

I’m currently working on some cool demos for PDC09. Unfortunately, I can’t talk about them yet, but I can tell you some interesting things that I have found along the way. Since I do a lot of different development on a lot of different projects, most of my projects are built inside a VM. This makes it really easy to keep the projects separate and keeps the host machine clean. However, Hyper-V seems to kill the performance of graphics intensive tasks. So, Blend work is really slow. And besides, I’m among other things running some things that work with Azure, which is kind of slow. So I have opted for a solution where I share the Silverlight project between my VM and my host, making it possible for me to do the graphically intensive things on the host, but keep the source and source control in the VM.

More...

Styling a ListBox aka Autopsy of a ListBox

For some reason, I keep ending up with restyled ListBoxes in my projects. I don’t know if it is because I lack imagination or if the ListBox is just such a useful control. Anyhow, it is a control that most people will use in a lot of projects and that often needs to be restyled. However useful it is, the layout is pretty stiff and Windowsy and unless you are going for that old school Windows look, you will most likely want to style it and make it a bit flashier. Unfortunately, after having had a look around the web, I still haven’t found a good resource explaining the innards of a ListBox, so I decided to create one. It might not be a complete one, but it will cover most of the things you need to make some serious layout changes… So here we go

More...