Vorschau auf Windows 8 für Entwickler

by wmn 24. November 2011 00:09

Seit geraumer Zeit gibt es ja Windows 8 und Visual Studio als Preview-Version zum herunterladen. Dennoch sind viele Dinge, die auf die Entwickler zukommen, unklar. Wer nicht die Zeit hat, alles selbst auszuprobieren, sollte sich mal folgendes Video ansehen (1 h!). Es ist die bisher beste Präsentation, die ich gefunden habe: http://dnrtv.com/dnrtvplayer/player.aspx?ShowNum=0207

Inzwischen gibt es auch ein WIKI zum Thema, das fortlaufend erweitert wird: http://metroapps.wikispaces.com/ 

In diesem Wiki habe ich zum ersten Mal auch eine vernünftige Übersicht zum Thema Kompatibilität zwischen heutigen WPF/Silverlight-Anwendungen und WinRT-Anwendungen im Metro-Style gefunden!

Wie machen wir weiter??

by wmn 18. November 2011 17:24

Nach den vielen Dingen, die uns auf der Build-Konferenz im September gezeigt und vor allem nicht gezeigt wurden, fragen sich sicher viele, wie sie denn jetzt weiter machen sollen. Speziell die Zukunft der Silverlight-Anwendungen, Visual-Studio und .NET ist für viele nicht klar absehbar. Dies führt auch zu Problemen in der Argumentation bei und mit unseren Kunden. Wer hier noch Argumente und Hinweise braucht, sollte sich mal folgende Links ansehen. Vielleicht helfen sie ja dem ein oder anderen weiter:

Ward Bell: http://neverindoubtnet.blogspot.com/

Robert Lhotka: http://www.lhotka.net/weblog/

Und sein Statement zu SL: http://www.lhotka.net/weblog/Default.aspx#a12925691-3e22-41e2-9d8f-a66c115e8b8c

PPEDV: http://blog.ppedv.de/

Der Einstieg in DevFORCE – Beispiel mit Anleitung verfügbar

by wmn 11. October 2011 17:58

Will man sich einen ersten Überblick über DevForce verschaffen, kann man jetzt auf unserer neuen Domain die ersten Infos auf Deutsch beschaffen. Neben einem deutschen Whitepaper gibt es (neu) auch ein deutsches Tutorial, wie man in der Praxis mit DevForce umgeht – samt Quellcode und Schritt für Schritt Anleitung. Das ganze findet man unter www.devforce.de

Informationen zu DevForce

by wmn 30. September 2011 18:08

Auf der BASTA habe ich das Produkt DevForce vorgestellt. Als Partner von Ideablade sind wir als Ansprechpartner in Deutschland aktiv. Wir haben daher auf unserer Homepage angefangen entsprechende Informationen zum Produkt bereit zu stellen. Erste Unterlagen haben wir auch schon übersetzt. Bei Fragen bitte einfach anrufen: Infos zu DevForce

Vortragsunterlagen zum BASTA-Vortrag Silverlight und MVVM mit Caliburn-Micro in der Praxis

by wmn 28. September 2011 19:36

Gestern hatte ich in Mainz meine Projektfallstudie vorgestellt. Präsentiert wurde eine Silverlight-Anwendung in der wir Caliburn-Micro, Ideablade DevForce sowie die Telerik Controls verwendet haben. Im Vortrag ging es dann hauptsächlich um die Gesamtarchitektur der Anwendung sowie das Zusammenspiel der verschiedenen Bibliotheken. Auf den letzten Seiten der Präsentation finden sich auch die Links zu weiterführenden Informationen.

Präsentation zur Projektfallstudie

Sehen wir uns auf der BASTA?

by wmn 23. September 2011 20:28

Ich möchte nur nochmals darauf hinweisen, dass wir als Partner von Ideablade dieses Jahr auf der BASTA in Mainz ausstellen werden.

Außerdem werden wir im Rahmen einer Projektfallstudie ein Silverlight-Projekt von uns vorstellen.

Wer näheres wissen will findet die Infos hier: www.basta.net

Ich würde mich freuen, den ein oder anderen in Mainz begrüßen zu können. Bis kommende Woche.

Micha

Tracing and Caching fürs Entity Framework

by wmn 4. August 2011 19:13

Tracing und Caching sind wichtige Dinge insbesondere bei größeren Anwendungen. Hierzu kann man sich viele Dinge selber erstellen. Wer dazu keine Zeit hat sollte mal einen Blick auf die Tools werfen, die vom Entity-Framework-Team bereitgestellt wurden. Hier ist auch nochmals ziemlich gut erklärt, wie man sich in die bestehende Architektur des Entity-Frameworks “einklinken” kann.

http://code.msdn.microsoft.com/EFProviderWrappers

Windows 8 und die Entwickler – Die Gerüchteküche brodelt

by wmn 1. July 2011 20:49

Nachdem es zu diesem Thema zahllose Diskussionen gibt, habe ich hier mal einige Links zu aktuellen Informationen gesammelt. Das spart dem ein oder anderen sicher die mühsame Suche nach verwertbaren Informationen.

http://www.zdnet.com/blog/microsoft/microsoft-needs-to-tell-windows-8-developers-now-about-jupiter-and-silverlight/9608?tag=rbxccnbzd1

http://arstechnica.com/microsoft/news/2011/06/windows-8-for-software-developers-the-longhorn-dream-reborn.ars

http://www.heise.de/developer/artikel/Windows-8-HTML5-und-die-Folgen-fuer-NET-1267153.html

Nachtrag vom 11.8. Informationen von Telerik zum Thema: http://networkedblogs.com/lvZm1 

 

Die Reihenfolge der Links ist willkürlich und ohne Wertung! Sollte jemand noch was sinnvolles finden bin ich sehr daran interessiert.

Lesenswerter Artikel zu Windows 8 und was auf uns erwartet

by wmn 27. June 2011 23:47

In den vergangenen Wochen gab es ja ziemliche Unruhe unter den Entwicklern, was die Zukunft von .NET, WPF und Silverlight betrifft. Nach wie vor hat sich Microsoft nicht zu Details geäußert und die Aufklärung auf den September verschoben. In dieser Phase der Verunsicherung hilft vielleicht folgender Fachartikel etwas Licht in die Gerüchteküche zu bringen:

http://arstechnica.com/microsoft/news/2011/06/windows-8-for-software-developers-the-longhorn-dream-reborn.ars

Viel Spaß beim Lesen.

FoxPro-Anwendungen Modul für Modul nach Silverlight migrieren bzw. integrieren

by wmn 7. June 2011 19:30

Viele FoxPro-Entwickler stehen vor dem Problem große Anwendungen in die schöne neue Welt <G> zu migrieren. Häufig steht schon fest, daß die neue Entwicklungsumgebung .NET und damit Silverlight oder WPF oder ASP.NET sein wird. Aber auch für jede andere Web-Technologie ist der hier beschriebene Weg verwendbar.

Soweit so gut. In den meisten Fällen steht man aber vor der fast unlösbaren Aufgabe eine große Anwendung umzustellen. Meist hat man dafür weder die Entwicklungs- noch die Testkapazität geschweige denn das notwendige Budget. Somit bleibt nur, diese Umstellung Schritt für Schritt vorzunehmen. Da sich die Umstellungsphase auch über einen sehr langen Zeitraum hinziehen kann, sind Ideen für eine nahtlose Integration zwischen alten und neuen Systemteilen dringend gefragt.

Vor etwa zwei Jahren habe ich hierzu schon einmal das Windows Messaging im Rahmen eines Vortrags gezeigt. Dabei “kommunizieren” eine FoxPro-Anwendung und eine .NET-WPF-Anwendung über das Windows-Messaging miteinander. Der Anwender springt dabei - kaum merklich – zwischen alter und neuer Welt hin und her.

Heute stelle ich hier eine noch reibungslosere Integrationsmöglichkeit zwischen FoxPro-Anwendungen und Silverlight vor.

Die FoxPro-Beispielmaske:

image

Den Kern der Idee bildet das Internet-Explorer-Control (Active-X-Control!). Dieses Steuerelement bietet uns alle entscheidenden Funktionen um Silverlight-Masken anzuzeigen. Ein Beispielaufruf ist hinter dem Click-Event der Buttons implementiert:

this.olecontrol1.navigate2(“http://localhost:58226/slFoxIntegrationTestPage.aspx#/home”)

 

Die Silverlight Anwendung

Der Trick für eine nahtlose Integration von Silverlight in eine FoxPro-Anwendung liegt im sogenannten “Deep-Linking”, das Silverlight seit der Version 3.5. bietet. Hierbei kann man eine Silverlightanwendung direkt mit einem Aufruf einer bestimmten Maske starten. Am einfachsten kann man sich eine solche Anwendung über das “Silverlight Navigation Application”-Projekttemplate im Visual-Studio anlegen.

Ich habe die Optik der Startseite etwas angepasst sodaß man hier die Kopfzeile nicht mehr sieht. Diese brauchen wir für unser Beispiel einfach nicht mehr, da FoxPro für die Navigation in der Anwendung verantwortlich sein soll. Die Mainpage der Silverlight-Anwendung sieht dann so aus:

image

Nicht gerade spannend aber für unsere Zwecke völlig ausreichend. Kern dieser Seite ist jetzt nur noch das Frame-Control, das unsere Masken “hostet”, die wir von FoxPro aus direkt starten wollen. Hier der Auszug aus dem XAML der MainPage.xaml-Datei:

 

image

Damit sind die wesentlichsten Komponenten fertig gestellt. Wenn man jetzt die Silverlight-Anwendung startet bekommt man im Internetexplorer auch die korrekte Adresse der Silverlight-Anwendung auf seinem eigenen Rechner angezeigt. Diese kann man für den ersten Test einfach kopieren und nach FoxPro übertragen.

Wie kann man nun von FoxPro aus bestimmte Seiten direkt starten? Nun das geht direkt über die Startseite, die man mit entsprechenden Parametern aufrufen kann:

http://localhost:58226/slFoxIntegrationTestPage.aspx#/about?CustNo=1

Hierbei wird der Parameter “/about” über den URI-Mapper der MainPage in die Silverlightseite “/Views/About.xaml” umgemappt und dieses Control wird dann in dem obigen Frame-Control angezeigt.

Wie kann man dieser Maske nun von FoxPro aus Parameter übergeben? Auch das sieht man in der oben angebenen Adresse. Das “?” ist der Marker an dem Parameter intern unterschieden werden. In dem angezeigten Beispiel wird die CustNo mit dem Wert 1 übergeben. Auslesen kann man diesen Parameter dann auf der Silverlightseite z.B. im Codebehind der Maske über folgenden Aufruf:

image

Der Zugriff auf den Parameterwert ist sehr einfach, da VisualStudio uns hier ganz bequem zugreifen lässt:

image

Stellt sich natürlich noch die Frage, wie man Ergebniswerte von Silverlight nach FoxPro zurückgeben kann. Auch das ist eigentlich recht einfach solange es sich um wenige einzelne Informationen handelt. Der Trick ist hierbei eine Dummy-URl zu der man von Silverlight aus navigiert, um zurück zur FoxPro-Anwendung zu kommen. In folgendem Beispiel werden gefundene Daten zu einer URL zusammengesetzt und dann dorthin navigiert:

image

  Natürlich gibt es diese Webseite nicht wirklich. Hier sollte jetzt eigentlich auch ein entsprechender Fehler im Explorer-Control erscheinen. Damit das nicht passiert “fangen” wir diese Dummy-URL im Inernet-Explorer-Control in der FoxPro-Maske ab.

image

 

 

 

 

 

 

Hierzu habe ich am OCX-Control die Methode BeforeNavigate2 überschrieben. In diese wird die Dummy-URL als Parameter hereingegeben. Dadurch, daß ich den Parameter Cancel auf .t. gesetzt habe, wird die Navigation abgebrochen und der Aufruf der Seite quasi beendet.

Was aber tun, wenn man eine ganze Ergebnisliste von Silverlight nach FoxPro übergeben will? Die Übergabe per URL ist dafür sicher nicht geeignet. In diesem Fall muss man etwas mehr Aufwand betreiben. Der einfachste Weg hierfür geht sicherlich über XML-Dateien, die man im Isolated-Storage ablegt und deren Dateiname man als Parameter an Foxpro zurückgibt.

Der hier beschriebene Weg ermöglicht es - auch große Anwendungen - Stück für Stück umzustellen ohne dass der Anwender davon etwas merkt. Wenn Farben und Schriftarten sowie die Maskengestaltung angepasst wird, ist es für den Benutzer kaum auseinander zu halten, ob er sich in FoxPro oder in Silverlight bewegt. Wenn man sich die Implementierung der Serviceschnittstelle sparen will, kann man sicherlich auch WPF-Anwendungen auf die gleiche Art integrieren. Hierzu muss lediglich WPF als Browseranwendung laufen. Auch ASP.NET oder andere WEB-Anwendungen kann man auf diesem Weg nahtlos integrieren.

Vielleicht hilft das hier beschriebene Beispiel dem ein oder anderen auf dem Weg seine Anwendung auf eine neue Version zu migrieren.

.Net Stammtischvortrag zu DevForce und RIA-APPLICATIONS am 25.5.11

by wmn 26. May 2011 21:03

Gestern haben wir einen Vortrag von Marcel Good von Ideablade aus Californien gehört. Er hat das Produkt DevForce vorgestellt, das wir auch in unseren Projekten bereits mit Erfolg einsetzen. In dem vorgeführten Live-Beispiel wurde es, denke ich, allen Beteiligten klar wieviel Zeit man sich durch den Einsatz von DevForce sparen kann. Wer WPF- oder Silverlightanwendungen entwickelt sollte sich dieses Produkt unbedingt einmal ansehen.

In den kommenden Tagen stellen wir das zugehörige Material auf der .NET-Stammtischhomepage noch online: www.devgroup-stuttgart.de

Wer sich näher für das Produkt interessiert kann bei mir auch noch eine Zusammenfassung der Produktfeatures im Vergleich zu den RIA-Services bekommen. Bitte meldet Euch einfach bei mir.

Hier noch der Link auf die Homepage von IdeaBlade: www.ideablade.com

Windows Phone Entwicklung und Virtuelle Maschinen

by wmn 9. February 2011 18:09

Seit einiger Zeit bin ich ja auch stolzer Besitzer eines Windows Phone 7 Geräts (HTC Pro 7). Zusammenfassend kann man sagen, daß ich von dem Gerät durchweg begeistert bin. Anfangs war ich auch sehr skeptisch, ob Microsoft, nach den unrühmlich Windows Mobile Erfahrungen, in der Lage sein wird, ein vernünftiges Handybetriebssystem auf den Markt zu bringen. Aber Respekt, sie haben aus den Erfahrungen gelernt und wirklich ein brauchbares Umfeld geschaffen.

Inzwischen habe ich natürlich auch die ersten Anwendungen erstellt und damit entsprechende Erfahrungen gesammelt. Einige wichtige Dinge, die wie immer kaum zu finden sind, möchte ich an dieser Stelle kurz weiter geben:

Für meinen ersten Test habe ich versucht die Windows Phone 7 Tools auf  einer neuen/leeren virtuellen Maschine zu installieren. Hier erhält man im Rahmen des Setups etliche unspezifizierte Fehler, die in einem Blue-Screen und dem Totalabsturz (!!!) der virtuellen Maschine münden! Der Setup bricht dabei einfach ab, der Bluescreen kommt und die virtuelle Maschine bootet neu! Nach reichlich aufwändiger Recherche habe ich dann den Hinweis gefunden, daß derzeit die Installation des Windows-Phone-Emulators auf einer virtuellen Maschine nicht unterstützt wird. Das hätte man im Setup auch prüfen und in Form einer sauberen Meldung anzeigen können.

Also habe ich die Tools samt der ZUNE-Software nochmals auf meiner Basismaschine (windows 7, 64bit) installiert. Hier klappte sofort alles reibungslos. Der erste Programmstart auf dem Emulator lief sofort. Nach Freischaltung meines Handys klappte auch das Deployment auf mein Handy sofort – sowohl im Debug- als auch im normalen Modus wurde die Anwendung korrekt installiert und ließ sich starten. Das Zusammenspiel zwischen Handy und VS2010 kein Problem.

Im nächsten Schritt habe ich wieder meine virtuelle Maschine angeworfen, auf der bereits ein WCF-Service lauffähig unter dem IIS installiert war. Auf dem Handy habe ich dann die Silverlight-Anwendung gestartet, die diesen Service verwendet. Das Handy war nur über WLAN im Netz angebunden! Und siehe da der Zugriff auf den Service klappte sofort.

Jetzt kam noch der Test mit dem Emulator auf der Hauptmaschine und dem Zugriff auf den WCF-Service in der virtuellen Maschine: Und hier kommt eine Überraschung, mit der ich nicht gerechnet habe:

image

Offensichtlich werden hier gleiche Mechanismen zur Verwaltung des Emulators wie auch der virtuellen Maschine verwendet. Aber der zugehörige Manager kann nicht gleichzeitig für beide Dinge verwendet werden! Eine Lösung für dieses Thema habe ich bis jetzt noch nicht gefunden aber ich bleibe dran…

Insgesamt funktioniert die Anwendungsentwicklung auf dem Gerät ziemlich reibungslos und macht richtig Spaß. Sobald ich vernünftige Beispiele erstellt habe werde ich sie hier bereitstellen. Jetzt stehen erst einmal Entwicklungen für die Kunden an.

Silverlight XML Datei herunterladen und auslesen

by wmn 17. December 2010 23:50

XML-Dateien sind ja sehr praktisch um kleinere Datenmengen dynamisch irgendwoher zu laden.  In Folgendem Besipielcode sind die notwendigen Funktionen zusammengefasst mit denen an das recht einfach unter Silverlight tun kann. Im Beispiel liegt die XML-Datei dort, wo auch die XAP-Datei liegt.

Damit sowas problemlos passiert, muss ein Zugriff auf den Webserver möglich sein. Neben den reinen Zugriffsrechten sollte auch eine Cross-Domain-Policydatei vorhanden sein:

Dateiname im Rootverzeichnis des Servers: crossdomain.xml mit folgendem Inhalt:

<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>

 

Die XML-Datei sieht so aus:

<?xml version = "1.0" encoding="Windows-1252" standalone="yes"?>
<filmliste>
    <Film title="Testfilm1" filename="Film1.wmv" comment="kein Kommentar"/>
  </filmliste>

Die Lade- und Auslesefunktion sehen bei mir so aus:

void getFilmListFromHomepage()
{
try
   {
    Uri xmlFilmListFile = new Uri(this.SourceDirectory +
"FilmListe.xml", UriKind.Absolute);

    WebClient cl = new WebClient();
    cl.DownloadStringCompleted +=
new DownloadStringCompletedEventHandler(cl_DownloadStringCompleted);
 
    cl.DownloadStringAsync(xmlFilmListFile);
    return;
    }
catch (Exception xx)
    {
    MessageBox.Show("Problem beim lesen der FilmListe: " +
  xx.Message.ToString());
    return;
    }
}

void cl_DownloadStringCompleted(object sender,
DownloadStringCompletedEventArgs e)
{
  // achtung crossdomain policy datei muss da sein!
string xmlFilmListe = e.Result;
XDocument xdoc = XDocument.Parse(xmlFilmListe);

_FilmListe = from ex in xdoc.Descendants("Film")
  select new Film
                   {
                   Title = ex.Attribute(XName.Get("title")).Value,
                   FileName = ex.Attribute(XName.Get("filename")).Value,
                   Comment = ex.Attribute(XName.Get("comment")).Value
                   };

PLBFilmTitles.ItemsSource = _FilmListe;
}
Übrigens an das Startverzeichnis der Silverlightanwendung 
kommt man so heran:
public void GetConfigInfosFromServer()
{
string cp =
System.IO.Path.GetDirectoryName(Application.Current.Host.Source.ToString())
+ @"\MovieViewer.xml";
cp = cp.Replace("\\", "//");

try
  {
   Uri xmlFilmListFile = new Uri(cp, UriKind.Absolute);

   WebClient cl = new WebClient();
   cl.DownloadStringCompleted += new DownloadStringCompletedEventHandler(
cl_DownloadConfigInfosCompleted);
   cl.DownloadStringAsync(xmlFilmListFile);
   return;
}
catch (Exception xx)
   {
   MessageBox.Show("Problem beim lesen der Konfiguration: " +
xx.Message.ToString());
   return;
   }
}
Vielleicht hilft der Quellcode ja doch dem Einen oder Anderen schneller 
zum Ziel zu kommen.
 

Tags:

c# | Silverlight

Unterlagen DevCon Frankfurt 2010

by wmn 16. November 2010 01:00

Auf der DevCon in Frankfurt (www.devcon.dfpug.de)  habe ich wieder mal zahlreiche Vorträge gehalten. Mein Dank geht an alle, die so lange durchgehalten haben und sich teilweise sogar abends noch unsere Fallstudie bis 22:30 Uhr angetan haben!

Wer es nochmals braucht bzw. die Unterlagen noch nicht hat, kann die Vortragsunterlagen hier  herunterladen. Fragen und Ideen sind natürlich jederzeit gerne willkommen.

mehrsprachige Anwendungen mit Silverlight und RIA Services

by wmn 13. November 2010 17:09

auf der Devcon in Frankfurt (www.devcon.dfpug.de)  wurde ich auf das Thema Lokalisierung von Silverlight Anwendungen angesprochen. Hierzu gibt es eine recht gute Quelle von Bard Adams hier:

In seinem Blog beschreibt er die vorhandenen Standardmechanismen, die auf Ressourcen basieren.

Eine aus meiner Sicht erheblich handlichere und flexiblere Lösung wird im .NET Framework von Oakleaf verwendet. Die Beschreibung dazu kann man sich inklusive Videos auf der Homepage www.oakleafsd.com ansehen. Dort kann man sich auch den Developers Guide zum Framework herunterladen, in dem die Technik genauer beschrieben ist. Der Download ist auch möglich ohne das Framework zu kaufen.

Vortragsunterlagen BASTA 2010 – Silverlight Offline Daten

by wmn 24. September 2010 20:30

Die Basta ist vorbei, meine Session auch. Ich danke allen Teilnehmern, die so kurz vor Schluß noch so zahlreich zu meiner Session gekommen sind und dann auch noch an der Diskussion teilgenommen haben. Offensichtlich ist das doch ein Thema, was nicht nur mich interessiert.

Wie versprochen kommt hier der Link zu meinen Beispielen und den Folien, die  ich gezeigt habe.

Für Fragen habe ich immer ein offenes Ohr und würde mich über Rückmeldungen freuen. Vielleicht sieht man sich ja auf der Webtech oder der Frühjahrs-Basta wieder..

Tags:

c# | LINQ | Silverlight

Video zu Lightswitch auf Channel 9

by wmn 30. August 2010 20:59

In den vergangenen Tagen gab es immer wieder Hinweise auf ein neues Produkt von MS das sich Lightswitch nennt. Hierbei handelt es sich um einige Projekttemplates und Designer mit denen man ganz einfach komplette Datenbankanwendungen erstellen kann. Ich halte das Produkt für viele kleine Projekte für enorm interessant. Auch wenn es sich um einen Anwendungsgenerator handelt, verbaut man sich durch die Benutzung nichts! Insbesondere für Einsteiger bietet sich ein äußerst komfortabler Weg in die MVVM- Anwendungsarchitektur. Generiert werden dabei Silverlight Anwendungen, die mit beliebigen Datenquellen arbeiten können. Derzeit sind Projektvorlagen für C# und VB verfügbar.

Inzwischen ist auch die Beta zum Download bereit gestellt worden. Wer sich einen tiefergehenden Überblick verschaffen will - insbesondere was die Erweiterbarkeit angeht - sollte sich folgendes Video mal ansehen:

http://bit.ly/csqb3P

Übrigens wurde auch auf Universalthread eine separate Rubrik eröffnet. Hier laufen bereits die ertsen Diskussionen zu diesem Thema: www.universalthread.com.

 

Silverlight 4 und das “dynamic” Keyword

by wmn 25. June 2010 14:09

Nur weil ich heute auch eine Weile danach gesucht habe dokumentiere ich das hier. Vielleicht spart es ja dem ein oder anderen Kollegen die Zeit für die Suche.

Seit VS2010 kann man auch in Silverlight 4 das Keyword “dynamic” verwenden. Ich habe es im Zusammenspiel mit einem selbst geschriebenen COM-Server benötigt. Diesen instanziiere ich wie folgt:

image

Dieser Code lässt sich kompilieren und ausführen d.h. der COM-Server wird korrekt instanziiert. Die Probleme kommen aber jetzt:

image

Durch dynamic hat man kein Intellisense mehr! Somit werden die vorhandenen Methoden und Eigenschaften des COM-Servers im Editor nicht angezeigt oder validiert – sollte man meinen?! Trotzdem ist der korrekte Methodenaufruf in der zweiten Zeile rot unterstrichen und lässt sich so auch nicht kompilieren. Was nun?

  • Die Namespaces sind alle korrekt in der aktuellen Datei
  • Die Referenzen im Projekt scheinen auch alle richtig und vollständig zu seinimage
  • Der COM-Server, eine separate C# Klassenbibliothek lässt sich als Referenz nicht ins Silverlight Projekt einbinden

Die Lösung ist wie immer einfach – wenn man’s weiß:  Es fehlt doch eine Referenz im Projekt:

image

Das wars! Jetzt wird im Editor nichts mehr validiert, was mit dynamischen  Objekten zu tun hat und kompilieren lässt sich das Ganze auch. Das Problem ist halt, dass Fehler erst zur Laufzeit zur Exception führen.

Tags:

Silverlight

CommandBindings in Silverlight und WPF

by wmn 14. June 2010 14:11

Da ich auch lange nach einem kurzen und einfachen Beispiel für die Verwendung von Commands in Silverlight und WPF gesucht habe, dokumentiere ich mal hier die wesentlichen Schritte.

Silverlight - Schritt 1:

Zuerst einmal müssen wir uns das CommandBinding definieren.

image

Silverlight – Schritt2:

Jetzt “verbinden wir das Commandbinding mit den entsprechenden Handlermethoden im Codebehind der Maske


image

Silverlight – Schritt 3:

Jetzt müssen wir nur noch das entsprechende Steuerelement – hier der Button – mit dem Commandbinding “verbinden”:


image

Das war’s auch schon. Im Unterschied zur WPF können wir derzeit mit dem Silverlight Standard-Control keine Tastaturvorbelegung machen!

Mit WPF ist eigentlich alles gleich zu definieren. Allerdings kann man hier noch z.B. Ctrl+S auf der Tastatur vorbelegen:

image

Dies ist unter Silverlight nur mit mehr Aufwand oder mit Contrrols verschiedener Hersteller möglich.

Tags:

WPF | Silverlight

Silverlight 4 – Preisfrage: Was ist das für ein Control?

by wmn 10. June 2010 23:16

Es ist ja bekannt, daß in Silverlight und WPF sogenannte “lookless controls” verwendet werden. Man hat hier enorme Möglichkeiten das Aussehen von Steuerelementen zu verändern. Auf folgendem Screenshot sieht man ein neues Silverlight Control. In Wirklichkeit kann man das sehr einfach animieren sodaß die angezeigten Elemente sich auch noch gleichförmig bewegen. Frage was für ein Control wurde hier verwendet?

image

Ja es ist tatsächlich eine Listbox! Die Besonderheit an diesem Control ist, daß sich die Elemente entlang einem “Pfad” in diesem Fall einer kreisförmigen Linie bewegen. Abgebildet wird das über folgenden Code:


image

Damit das Ganze schön aussieht und animiert ist, muß man natürlich noch etwas mehr tun. Aber es lohnt sich, wenn man etwas peppigere Oberflächen anlegen will. Leider gibts dieses Control (bisher??) nicht für WPF. Zumindest habe ich dort nichts Vergleichbares gefunden. Hier ist sowas zwar auch möglich, benötigt aber mehr Handarbeit. Etwas problematisch ist die Tatsache, daß man auch im neuen Maskendesigner von VS2010 nicht sehen kann, wie das Control nachher rauskommt. Nur in Expression Blend wird es auch zur Designzeit korrekt dargestellt.

Tags:

Silverlight

Silverlight und implicit styles

by wmn 21. May 2010 23:21

Normalerweise sollen in einer Anwendung alle Elemente der GUI einheitlich aussehen. Bisher hat  man das sowohl in WPF als auch in Silverlight über sogenannte Styles lösen können. In Silverlight mußte man diesen Style aber den Steuerelementen explicit zuweisen, was in WPF nicht nötig war. Jetzt gibt es in SL 4 ebenfalls die sogenannten implicit styles. Das sind Style-Definitionen ohne Key d.h. ohne speziellen Namen, die für alle Elemente des definierten Steuerelementtyps verwendet werden.

Beispiel für einen solchen Style:

image

Verwendet man nun Buttons in seiner Anwendung wird automatisch dieser Style verwendet, wenn am Control nichts anderes angegeben wurde. Dieser Mechanismus greift aber in jedem Fall, was zu unerwarteten Effekten führt:

image                       image

Wenn man sich diese Screen-Shots mal genauer ansieht, entdeckt man, dass alle Buttons (d.h. auch die von Silverlight-Controls) diesen Style verwenden. Im Beispiel werden die Knöpfe vom DataPager und Datepicker ebenfalls gedreht. Abhilfe bieten hier die üblichen Wege, wie überschreiben oder eigene Usercontrols. Eventuell hilft auch die Kombination von verschiedenen Styles weiter:

 

image

Tags:

Silverlight

Silverlight und MEF

by wmn 29. January 2010 22:25

Auf meinem Silverlight 4 Vortrag bei der .NET User Group Stuttgart am Mittwoch habe ich auch kurz MEF erwähnt, ohne Details dazu zu zeigen. Wer wissen will, was sich hinter diesen drei Buchstaben verbirgt, kann sich folgendes Video mal ansehen: Silverlight TV Episode 4: 3 Steps to MEF - Export, Import, Compose.

Tags:

Silverlight | MEF

Silverlight Out o Browser Anwendungen debuggen

by wmn 25. January 2010 22:26

 

Lässt man Silverlight 4 Anwendungen im “Out of Browser Modus” laufen hat man erheblich mehr Möglichkeiten wie bisher. Durch die Möglichkeit in Silverlight 4 die Berechtigungsstufe zu erhöhen, kann man dann auf lokale COM-Server, die lokale Hardware und aufs File-System direkt zugreifen. All’ das macht Silverlight-Anwendungen vor allem im Intranet sehr interessant! Allerdings stolpert man hier in ein kleines Problem: Das Debuggen solcher Anwendungen ist nicht mehr so leicht möglich. Viele Entwickler hängen sich mit dem Debugger einfach an den entsprechenden Prozess an, doch auf diese Weise kann man nicht so komfortabel an alle Dinge heran kommen. So geht es bequemer:

1.) Die Silverlight Anwendung neu erstellen wobei die Start-Anwendung des Web-Projekt der Solution sein muss

2.) Die Silverlight Anwendung als Out-Of-Browser Anwendung auf der Maschine installieren (rechte Maustaste in der laufenden Anwendung)

3.) Anwendung beenden, die Silverlight-Anwendung in der Solution als StartProjekt festlegen

4.) In der Solution auf den Projekteigenschaften der Silverlight-Anwendung unter Debug die Einstellung “Installed out of Browser application” markieren

image

5.) Breakpoints setzen und Anwendung mit <F5> starten. Jetzt hält die Anwendung an den Breakpoints wie gewohnt an.

Tags:

Silverlight

Silverlight RIA Services

by wmn 13. October 2009 23:31

Derzeit bin ich daran mir die RIA Services für Silverlight mal etwas genauer anzusehen. Grundsätzlich ist der Ansatz sowohl von der Architektur als auch vom Komfort der Genertoren sehr vielversprechend.

Ich habe mir also das RIA Toolkit runtergeladen und gemäß der beschreibung mal ein Beispielprojekt angelegt. Funktionierte alles prima bis auf die Tatsache, daß sich das Projekt nicht kompilieren lässt!:

Warning    1    The "CreateRiaClientFilesTask" task failed unexpectedly.
System.Security.SecurityException: Request for the permission of type 'System.Web.AspNetHostingPermission, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' failed.
   at System.Reflection.Assembly._GetExportedTypes()
   at System.Reflection.Assembly.GetExportedTypes()
   at System.Web.DomainServices.Tools.AssemblyUtilities.GetExportedTypes(Assembly assembly, ILogger logger)
   at System.Web.DomainServices.Tools.DomainServiceCatalog.AddDomainServiceDescriptions()
   at System.Web.DomainServices.Tools.DomainServiceCatalog..ctor(IEnumerable`1 assemblies, IEnumerable`1 references, ILogger logger)
   at System.Web.DomainServices.Tools.ClientProxyGenerator..ctor(String language, IEnumerable`1 assemblies, IEnumerable`1 references, ILogger logger)
   at System.Web.DomainServices.Tools.CreateRiaClientFilesTask.GenerateClientProxies()
   at System.Web.DomainServices.Tools.CreateRiaClientFilesTask.Execute()
   at Microsoft.Build.Framework.ITask.Execute()
   at Microsoft.Build.BuildEngine.TaskEngine.ExecuteInstantiatedTask(EngineProxy engineProxy, ItemBucket bucket, TaskExecutionMode howToExecuteTask, ITask task, Boolean& taskResult)

Nach viel Sucherei habe ich den Fhler inzwischen auch gefunden: Wenn mans weiß ist es wie immer ganz einfach. Sobald man solche Projekte auf einem gemappten Laufwerk eines anderen PCs laufen lässt kommt es zu dieser Meldung. Entweder muss man dann die Berechtigungen entsprechend anpassen oder das Projekt verlegen.

Demnächst gibts hier mehr Infos zu diesem Thema.

Databinding und Stringformatierung seit SP1 – das ist an mir vorbei gegangen

by wmn 7. October 2009 23:32

Wenn man in WPF oder Silverlight Daten an ein Control bindet kann man die Daten püber einfach zu erstellende Konverter
Klassen konvertieren bevor sie angezeigt werden bzw. bevor sie zurückgeschrieben werden. Das war bisher so.

Seit dem ServicePack1 von Visual Studio 2008 kan man – zumindest bei den alltäglichen Konvertierungen – eine stark vereinfachte
Syntax verwenden:

<TextBlock>

        <TextBlock.Text>

                <Binding ElementName="myComboBox" Path="SelectedItem.Content" StringFormat="{}{0:C}"/>

        </TextBlock.Text>

</TextBlock>

 

<GridViewColumn Header="Price" DisplayMemberBinding="{Binding Path=Price, StringFormat=C}"/>

<TextBlock>

        <TextBlock.Text>

            <MultiBinding StringFormat="Item1 cost: {0}, Item2 cost: {1}">

                <Binding ElementName="myComboBox" Path="SelectedItem.Content"/>

                <Binding ElementName="myComboBox2" Path="SelectedItem.Content"/>

            </MultiBinding>

        </TextBlock.Text>

</TextBlock>

Die Angabe des Stringformats gibt uns die Möglichkeit zumindest einfach Konertierungen ohne eigene Klasse vorzunehmen. Hierbei kann
man d für kurze Datumsangaben, D für lange Datumsangaben, c für Währung und P für Prozentangaben.

Alternativ gibt es auch noch das Contentstringformat mit dem man komplexere Konvertierungen vornehmen kann:

<Label ContentStringFormat="dddd – d - MMMM">

    <sys:DateTime>2004/3/4 13:6:55</sys:DateTime>

</Label>

 

<Button ContentStringFormat="{}{0:MM/dd/yyyy}">

        <sys:DateTime>2004/3/4 13:6:55</sys:DateTime>

</Button>

 

<ListBox Name="lb1" SelectedIndex="1" ItemStringFormat="F1">

        <sys:Double>3.14159</sys:Double>

        <sys:Double>2.71828</sys:Double>

</ListBox>

 

Diese Vereinfachung ist wirklich hilfreich und funktioniert erst ab ServicePack1 aber dieser dürfte ja inzwischen fast überall freigegeben worden
sein.

Tags:

WPF | Silverlight