WPF and the Vista User Experience

I am working on a user interface (UI) for a client tool of our current project. Though, the last two have been a epic battle fighting with a various of minor things. However, each and every of these things does cost a remarkable amount of time.

Starting with WPF many developers will spend mcuh time with skinning in WPF. It’s a cool thing, but you should leave these things to designers. It is a enormous time sink. You make huge progress in the beginning but end up with endless fine-tuning in the end. The first have a look at the Windows Vista User Experience Guidelines. The really thing: you don’t have to read everything online, just download the 630 pages as PDF document. You will see that skinning should be used carefully. Much more important are some new guidelines to keep in sync with the Vista UI. BTW: if you are looking for the Vista icons you should have a look here (but I haven’t told you that and so use them only to inspire you by creating own icons).

Well, what’s about the cool stuff such as the new Command Link in Vista? Should be a new control? Well, not that easy. Daniel Moth found out to check the Vista Bridge Samples coming with the Windows SDK. you should go definitely for the Windows SDK Update for Vista. Daniel also gives a first impression how to use the TaskDialogs provided by the VistaBridgeLibrary.

Now you will definitely run into trouble if you don’t create a manifest file for you application using the following dependency:

<dependency> 
 <dependentAssembly> 
 <assemblyIdentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="6595b64144ccf1df" language="*" /> 
 </dependentAssembly> 
</dependency>

In my case, I also had to use strong-named assemblies since they are used within VSIP packages. You will realize that the VistaBridgeLibrary uses friendly assemblies, Junfeng gives a short introduction into friendly assemblies. You’ll discover that is not as easy since there have been some changes in Visual Studio 2005. Adrian figured out how it works. David cover’s the further steps and also provides a small tool to obtain the public key token of a signed assembly ready to be copy ‘n’ pasted into your Assembly.cs file.

Federated Services

Clemens Vasters just wrote about federated services in his blog. Sounds familiar? Of course. I spend a lot of time two years ago in investigating in Web Service Federations including soft- and hardware in my research at the IT-Management and Web Engineering Research Group (MWRG). At this time it was quite hard to explain to people what a Web Service federation actually is supposed to mean. We had a look deep into a couple of technologies. E.g., we allowed to connect uPnP devices with non-uPnP services across organizational boundaries, we used off-the-shelf Phidgets devices to control simulated Intel uPnP services. Unfortunately, WCF was not that stable at this time to use it as infrastructure for our approach even if we started to build upon it in the beginning.

WPF Data Binding

Best points to start understanding WPF data binding are the MSDN articles “Windows Presentation Foundation Data Binding” here and here. More can be found in the MSDN magazine article Customizing Controls For Windows Presentation Foundation. To learn how to bind to element properties the forum entry may help. A somewhat twisted introduction to Styles and Templates can be found here.

UK DPE WPF WMF

Beyond this truly epic acronym is a video done by the Microsoft UK DPE team about WPF and corporation between designers and developers in practice. Since I am dealing with WPF for a while I also looked at Microsoft Expression Blend which is coming soon.

“The UK MCS User Experience team and a number of UK partners have been working on WPF for over 12 months and this Real World WPF series is intended to show some of their work and capture/share some of their learnings. Nick Page talks to Martin Grayson and Paul Tallett from the UK MCS User Experience team about their experiences working on real world WPF applications and specifically how Designers and Developers have worked together on these projects.”

SearchIndexer.exe makes my laptop being a Hairdryer

SearchIndexer.exe does all the indexing stuff on your Vista machine. Not bad at all it is not possible to schedule when the indexer is running as it was able using MSN Desktop Search. E.g., there you have been able to send the indexer to sleep for a 10, 20 or 60 minutes or to avoid running the indexer whilst working on the machine. it looks like the only way to calm the machine down is by switching of the service at all. Another work around I am trying right now is to got to Control Panel / Power Options and choosing the High Performance Change power plan settings. There chose Change advanced power settings Search and Indexing values to Power Saver or Balanced. This should lower the indexing effort of the Vista Search significantly.

Search and indexing Power Options

Toshiba m400 Slice Expansion Battery Pack

Today we got another m400 in the team. The laptop came with the Toshiba Slice Expansion 6-Cell Li-Ion Battery Pack which I immediately took borrowed. I am just charging the batteries and will then try the uptime using both batteries with Toshiba’s balanced and power saver settings. The Toshiba web page promises about 9 hours uptime using the extension, so we will see how my machine drains the batteries…

Toshiba m400 Battery Sceenshot

Ping-o-mat

Need a (almost) full list off ping servers to be used in Windows Live Writer? I found the following list

http://1470.net/api/ping
http://api.feedster.com/ping
http://api.feedster.com/ping.php
http://api.moreover.com/ping
http://api.moreover.com/RPC2
http://api.my.yahoo.com/RPC2
http://api.my.yahoo.com/rss/ping
http://bblog.com/ping.php
http://bitacoras.net/ping
http://blogdb.jp/xmlrpc
http://blog.goo.ne.jp/XMLRPC
http://blogmatcher.com/u.php
http://bulkfeeds.net/rpc
http://coreblog.org/ping/
http://mod-pubsub.org/kn_apps/blogchatt
https://phobos.apple.com/WebObjects/MZFinance.woa/wa/pingPodcast
http://ping.amagle.com/
http://ping.bitacoras.com
http://ping.bloggers.jp/rpc/
http://ping.blogmura.jp/rpc/
http://ping.blo.gs/
http://ping.cocolog-nifty.com/xmlrpc
http://pinger.blogflux.com/rpc/
http://ping.exblog.jp/xmlrpc
http://ping.feedburner.com
http://ping.myblog.jp
http://pingqueue.com/rpc/
http://ping.blogg.de/
http://ping.rootblog.com/rpc.php
http://ping.syndic8.com/xmlrpc.php
http://ping.weblogalot.com/rpc.php
http://ping.weblogs.se/
http://rcs.datashed.net/RPC2/
http://rpc.blogbuzzmachine.com/RPC2
http://rpc.blogrolling.com/pinger/
http://rpc.britblog.com/
http://rpc.icerocket.com:10080/
http://rpc.newsgator.com/
http://rpc.pingomatic.com/
http://rpc.tailrank.com/feedburner/RPC2
http://rpc.technorati.com/rpc/ping
http://rpc.weblogs.com/RPC2
http://rpc.wpkeys.com/
http://services.newsgator.com/ngws/xmlrpcping.aspx
http://signup.alerts.msn.com/alerts-PREP/submitPingExtended.doz
http://topicexchange.com/RPC2
http://trackback.bakeinu.jp/bakeping.php
http://www.a2b.cc/setloc/bp.a2b
http://www.bitacoles.net/ping.php
http://www.blogdigger.com/RPC2
http://www.blogoole.com/ping/
http://www.blogoon.net/ping/
http://www.blogpeople.net/servlet/weblogUpdates
http://www.blogroots.com/tb_populi.blog?id=1
http://www.blogshares.com/rpc.php
http://www.blogsnow.com/ping
http://www.blogstreet.com/xrbin/xmlrpc.cgi
http://www.holycowdude.com/rpc/ping/
http://www.lasermemory.com/lsrpc/
http://www.imblogs.net/ping/
http://www.mod-pubsub.org/kn_apps/blogchatter/ping.php
http://www.newsisfree.com/RPCCloud
http://www.newsisfree.com/xmlrpctest.php
http://www.popdex.com/addsite.php
http://www.snipsnap.org/RPC2
http://www.weblogues.com/RPC/
http://xmlrpc.blogg.de
http://xping.pubsub.com/ping/