Scrollviewer um Textblock legen

Eigentlich banal, kann aber trotzdem Probleme machen. Wenn ein Text zu lange ist, zum Anzeigen per Silverlight TextBlock Steuerelement, legt man ein Scrollviewer Element aussen rum. Wichtig ist Height und Margin Attribute dann dem Scrollviewer zuzuordnen. <ScrollViewer VerticalScrollBarVisibility="Auto" Height="57" HorizontalScrollBarVisibility="Disabled" > <TextBlock Text="Imagine that blaaaaa" TextWrapping="Wrap" VerticalAlignment="Top" /> </ScrollViewer> Das Ergebnis kann so aussehen

.NET RIA Services in ASP.NET verwenden

Im Zuge der Vorbereitungen zur ADC09 habe ich eine Demo geschrieben die mit den .NET RIA Services arbeitet. Leider ist das Zeugs noch nicht mal Beta und so wird sich vermutlich noch eine Menge ändern. .NET RIA Services sind die gefühlte 100ste Methode um Daten in entkoppelten System vom Server zur Anwendung zu bringen (WCF, ADO.NET Dataservcies, ASMX, REST, Socket ectect). Silverlight braucht das, da kein direkter Zugriff auf SQL Server möglich ist (noch nicht). Wenn man das ganze zu Ende denkt ist das nichts anderes als ein Service Layer. Und ein guter Service Layer kann auch von anderen UI Technologien konsumiert werden. In diesem Fall ASP.NET. Zunächst muss .NET RIA Service July installiert sein. Ausserdem brauchen wir eine Silverlight Business Application. Die nächsten Schritte nur im Eilverfahren, weil nicht Gegenstand des Blogs. Datenmodell mit z.B. Entity Framework das Orte anzeigt, Domain Service Class (DomainService1) mit der Methode getOrte. Dann im Web Verzeichnis ASP.NET anlegen. Sicherstellen das die beiden DLL’S Microsoft.Web.Extensions.dll und System.Web.DomainServices.WebControls.dll in der Version 99.0.0.0 im Bin Verzeichnis liegen. Eine Referenz im Projekt darauf erstellen. Dann erhält man ein neues ASP.NET Server Control DomainDatsource. In meinem Beispiel auf der ADC erzeuge ich damit eine Excel File mit Hilfe eines Repeater Controls. <%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="BusinessApplication1.Web.WebForm1" %> <%@ Register TagPrefix="asp" Namespace="System.Web.DomainServices.WebControls" Assembly="System.Web.DomainServices.WebControls" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> </head> <body> <% Response.ContentType = "application/vnd.ms-excel"%> <form id="form1" runat="server"> <asp:DomainDataSource runat="server" ID="ds1" DomainServiceTypeName="BusinessApplication1.Web.DomainService1" SelectMethod="GetOrte" /> <table> <asp:Repeater ID="Repeater1" runat="server" DataSourceID="ds1"> <ItemTemplate> <tr> <td> <%#Eval("plz")%> </td><td> <%#Eval("Ort")%> </td> </tr> </ItemTemplate> </asp:Repeater> </table> </form> </body> </html>

ppedv erffnet 2 Neue Trainingscenter in Leipzig und Dresden

Wissensvermittlung für Developer findet auf viele Arten statt. Blogs (blogs.ppedv.de), Konferenzen (www.adc09.de), Magazine ( Visual Studio one ) und natürlich Schulungen. Wir setzen im Trainingsbereich konsequent auf hohe Qualität und führen z.B. die allermeisten Schulungen mit eigenen Trainer durch. ppedv AG ist natürlich Microsoft Certified Gold Partner for learning solutions. So können Kunden Trainings mit Microsoft SA Vouchern bei uns auch kostenlos besuchen. Unser Ziel ist es das unseren Kunden mit wenig Aufwand das maximale Lernergebnis erzielen. Die Gruppen sind meist sehr klein und die Schulungen meist etwas kürzer. Die Trainer beten nicht nur MOC Agendas runter, sondern versuchen wirkliche Probleme lösen zu helfen. Wesentlich ist aber auch, wieviel Aufwand die Anreise ist. Deshalb haben wir in den letzten Jahren konsequent beim Kunden vor Ort Center eröffnet. Für die Leipzig und Dresden gibt es ab 1.September buchbare Termine. Burghausen 1997 Baden-Baden 2002 (geschlossen 2007) München 2003 umgezogen 2009 in größere Räume Siegen 2006 Köln 2006 Karlsruhe 2007 Wien 2007 Frankfurt 2008 Stuttgart 2008 Leipzig 2009 Dresden  2009 Das Büro in Leipzig liegt in prominenter City Lage (Georgiring 1-3) und verfügt über ein Dachterrasse (wie Siegen, Wien, Burghausen) Für alle die es nicht Wissen, ich halte auch noch selbst Trainings bei ppedv. Meine Themen sind Silverlight, ASP.NET, AJAX, IIS und ich schreibe meinen Code noch mit VB. In Leipzig wird mein Kollege und CTO der ppedv AG, Torsten Weber angesiedelt sein. Aktuell planen wir gerade im Bereich Azubis Fachinformatiker Anwendungsentwicklung ein spezielles sehr güsntiges Angebot zu schnüren. Dazu demnächst mehr.

Silverlight 3 Update 40723

Kaum da, schon wieder neu Angeblich wurden Buffering Probleme bei WMV Streams, die viele Script Kommandos enthalten behoben.

Gutes Design beginnt bei stimmigen Farben

Viele Menschen haben eine Meinung zu, “das ist ein schönes Design und das ist ein schlechtes Design”. Auch wenn man dazu gut diskutieren kann, besteht meist Grundkonsens. Aber nur mehr wenige können sagen, warum etwas schön oder weniger schön ist.   Ich will hier als positives Beispiel einen Ausschnitt des Blogs von Ralf Westphal zeigen. Grafiker lernen einen ganzen Satz von Regeln mit deren Hilfe man handwerksartig schönes Design erstellen kann. Der goldene Schnitt ist nur ein Beispiel davon. Ein anderes ist die Farbenlehre. Ich rede nicht von CYMK oder RGB  sondern von Harmonie von Farben. Bevor wir nun in die Tiefen des Mediendesign hinabsteigen, eine zulässige Verkürzung. Farbpalletten. Die meisten Microsoft Programme bieten solche. Wenn man sich eine solche Palette aussucht und innerhalb der angebotenen Farben bleibt, ist das erzeugte Dokument, egal ob Web oder Print, fast schon automatisch stimmig. Auch Expression Design besitzt solche Palletten.     Wer mehr möchte findet Vorschläge für Farbschemas auf der Website http://de-de.colourlovers.com/. Der Download ist gratis. Dieses Farbschema kann man als XML speichern und in Expression Design importieren. Der Menüpunkt dazu heißt Import Image Swatch. In dem Bereich Categories findet sich dann diese Palette wieder und freut sich auf Verwendung.

Silverlight Download Links

In den Foren wird häufig nach Download Links gefragt für Silverlight 3 oder auch für Silverlight 2 Plugins. Hier habe ich die URL’s mal zusammengefasst. Silverlight 1 Runtime Runtime für MAC Silverlight 2 Silverlight 2 Developer Plugin Runtime Developer Runtime für MAC Tools für Visual Studio End User Runtime für PC End User Runtime MAC   Silverlight 3 Runtime Download Runtime für MAC Developer Runtime Download aktuellste Offline CHM Änderungen von Beta zu RTW Bits Tools für Visual Studio 2008

Silverlight 3 Visual Studio 2008 Design Preview

Ich hab ja schon viel gesehen, das aber hat mich fast umgehauen. Da sagen die Microsofties das der Design Preview Support in Silverlight 3 gestrichen wurde. Zugegebenermaßen war das mit SL 2 keine Freude, weil Oberflächen Layout nur mit einer Read Only Vorschau ist ja nicht grad der Hammer. Aber der Hammer ist diese Vorschau ist nach wie vor vorhanden nur versteckt! Also wie gehts? mit der Maus auf die Leiste fahren am unteren Ende des XAML Editors. Dann erscheint ein Doppelpfeil. Nun kann man per Maus Drag den Bereich hochziehen. Jetzt nur noch reload clicken und fertig. Leider merkt sich das Visual Studio nicht so das man für jedes XAML File einzeln und nach jedem neustart diese Einstellung vornehmen muss.

Expression Blend 3 Notizen

Expression Blend 3 unterstützt den Workflow zwischen Designer und Entwickler viel besser. Neben dem “großen” Sketflow gibt es auch kleinere Ergänzungen. Eines davon sind Annotations. Ich nenne das einfach mal Notizen. Solche Notizen kann man an jedes Control in Blend hängen. Dies erscheint als kleines gelbes Quadrat. Hier P1 Zum anlegen einer solchen Notiz drückt man Strg Shift T oder wählt im Menü den Punkt aus.   Die Annotations kann man auch komplett ausblenden. Im XAML Code sieht das dann so aus <Rectangle Fill="White" Stroke="Black" HorizontalAlignment="Left" Margin="60,105,0,140" Width="110"> <Anno:AnnotationManager.Annotations> <Anno:Annotation Author="Preishuber" AuthorInitials="P" Left="170" SerialNumber="1" Timestamp="07/17/2009 17:54:39" Top="105" Text="STRG SHIFT T und &#xd;&#xa;schon hat man ne notiz"/> </Anno:AnnotationManager.Annotations> </Rectangle>

Das ASP.NET Silverlight Server Control in Silverlight 3 verwenden

Leider hat Microsoft das ASP.NET Server Control aus Silverlight 3 entfernt. Statt dessen muss jetzt per HTML Object Element das Silverlight Plugin in die Seite eingebaut werden. Laut Gerüchten wurde dies gemacht um klar zu stellen das man Silverlight in jede Art von Web Seite einbauen kann. Das hat aber auch Nachteile so ist der Scalemode nun verschwunden. Die Gute Nachricht ist, das Control aus Silverlight 2 lässt sich mit ein wenig Aufwand weiter verwenden. Einzig die System.Web.Silverlight.DLL muss man sich besorgen.   System.Web.Silverlight.dll in BIN Verzeichnis der Web Anwendung kopieren das ScriptManager Control aus den Extensions auf die Website ziehen Das  Silverlight control aus der Toolbox ziehen (oder tippen) Setzen von Source Attribut und MinimumVersion Attribut auf 3.0.40000.0 Wenn die  Silverlight Navigation Controls zum Einsatz kommen einen iframe mit der  ID “_sl_historyFrame” anlegen   <form id="form1" runat="server" style="height:100%;"> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <div style="height:100%;"> <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightApplication1.xap" MinimumVersion="2.0.31005.0" Width="100%" Height="100%" /> </div> </form>

Silverlight Objekt an Kreis entlang animieren

Mit Silverlight 3 kommen neue Animationstypen zb Bounce ( für Schwingen). Mir war schon immer ein anliegen mal eine Objekt an einem Kreis entlang zu animieren. Also ganz ohne Code nur per XAML. Mit Blend lässt sich das ganz leidlich abbilden. Ein kleiner blauer Ball soll sich im Uhrzeiger Sinn bewegen. Die gestrichelten Linien sind für mich zur Hilfe, weil ich mit unterschiedlichen Animationstypen experimentiert habe. Hier noch mein wunderbarer XAML Code. Wer genau hinsieht wird erkennen das die Bewegung zeitlich nicht linear ist, weil auf der Y Achse linear und auf X Circle animiert wird. <Storyboard x:Name="Storyboard1" RepeatBehavior="Forever"> <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)"> <EasingDoubleKeyFrame KeyTime="00:00:01" Value="100"> <EasingDoubleKeyFrame.EasingFunction> <CircleEase EasingMode="EaseOut"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> <EasingDoubleKeyFrame KeyTime="00:00:02" Value="0"> <EasingDoubleKeyFrame.EasingFunction> <CircleEase EasingMode="EaseIn"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> <EasingDoubleKeyFrame KeyTime="00:00:03" Value="-100"> <EasingDoubleKeyFrame.EasingFunction> <CircleEase EasingMode="EaseOut"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> <EasingDoubleKeyFrame KeyTime="00:00:04" Value="00"> <EasingDoubleKeyFrame.EasingFunction> <CircleEase EasingMode="EaseIn"/> </EasingDoubleKeyFrame.EasingFunction> </EasingDoubleKeyFrame> </DoubleAnimationUsingKeyFrames> <DoubleAnimationUsingKeyFrames AutoReverse="true" BeginTime="00:00:00" Storyboard.TargetName="ellipse" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.Y)"> <LinearDoubleKeyFrame KeyTime="00:00:02" Value="200"/> </DoubleAnimationUsingKeyFrames> </Storyboard>