Sonntag, 22. Mai 2011, 17:41 von Dennis Duda
Im letzten Artikel habe ich bereits die Eigenschaften ProgressState und ProgressValue vorgestellt. In diesem Artikel werden die anderen TaskbarItemInfo-Eigenschaften behandelt.
Description

Die Eigenschaft Description bestimmt den Text im Tooltip, wenn das Thumbnail eine längere Zeit offen ist. Sie nimmt einen String an.
Overlay

- Overlay-Bild
Ein Overlay ist ein kleines Icon, welches über das Programmicon in der Superbar gelegt wird, um beispielsweise einen bestimmten Status darzustellen. Die Eigenschaft erwartet ein Image.
ThumbnailClipMargin

ThumbnailClipMargin (Quelle: MSDN Library)
Die Eigenschaft ThumbnailClipMargin bestimmt den Ausschnitt des angezeigten Thumbnails und erwartet einen Thickness-Wert, mit dem der Ausschnitt eingegrenzt wird. Das Bild aus der MSDN Library beschreibt das Ganze sehr gut.
ThumbButtonInfos
ThumbButtons sind kleine Buttons, die unter dem Thumbnail angezeigt werden, um bestimmte Aktionen schnell tätigen zu können. ThumbButtonInfos erwartet eine ThumbButtonInfoCollection, die die ThumbButtons beherbergt. Eine genaue Erklärung sowie ein Beispiel finden Sie hier in der MSDN Library.
Geschrieben in Tipps und Tricks, Tutorials, WPF, WPF | Tags: .NET • .NET 4 • Windows 7 • WPF
Shortlink | Trackbacks/Pingbacks (0) | Keine Kommentare »
Sonntag, 22. Mai 2011, 15:27 von Dennis Duda

- Windows 7 TaskbarItem mit Statusleiste
Wahrscheinlich haben Sie – sofern Sie Windows 7 benutzen – schon einmal diesen Status- beziehungsweise Ladebalken in der Superbar gesehen. Seit dem .NET Framework 4 gibt es einen entsprechenden Namespace für die Superbar für WPF: System.Windows.Shell.
In diesem findet sich unter Anderem die Klasse TaskbarItemInfo, welche für ein TaskbarItem, also im Normalfall ein Fenster, den Ladebalken-Status und dessen Fortschritt, so genannte ThubnailButtons (Buttons unter dem Thumbnail), den Thumbnailausschnitt, ein Overlay für das Programm-Icon und die Beschreibung im Tooltip des Thumbnails zuständig ist.
In diesem Artikel geht es um die Ladebalkeneigenschaften. Damit Sie auf diese zugreifen zu können, benötigen Sie eine TaskbarItemInfo-Instanz, welche der gleichnamigen Eigenschaft eines Windows zugeordnet ist. Dies lässt sich am leichtesten in XAML realisieren:
XAML
<Window [...]>
<Window.TaskbarItemInfo>
<TaskbarItemInfo/>
</Window.TaskbarItemInfo>
</Window>
Alternativ können Sie dasselbe natürlich auch im Code-Behind machen:
VB.NET
Me.TaskbarItemInfo = New Shell.TaskbarItemInfo()
C#
this.TaskbarItemInfo = new Shell.TaskbarItemInfo();
Nun können Sie auf die Eigenschaften ProgressValue und ProgressState des TaskbarItemInfo-Objekts zugreifen, mit denen Sie den Fortschritt und den Status des Ladebalkens beeinflussen können. Die Eigenschaft ProgressState erwartet einen Wert aus der Enumeration System.Windows.Shell.TaskbarItemProgressState. Die folgenden Werte gibt es:

Ladebalken mit ProgressState = Indeterminate
- None – Es wird kein Ladebalken angezeigt.
- Normal – Es wird ein normaler, grüner Ladebalken angezeigt.
- Paused – Es wird ein gelber Ladebalken angezeigt. Dieser ist für Pausen im Ladevorgang gedacht.
- Error – Es wird ein roter Ladebalken angezeigt. Dieser ist für Fehler gedacht.
- Indeterminate – Es wird ein durchlaufender, grüner Ladebalken angezeift. Dieser ist für Aktionen gedacht, bei denen der aktuelle Fortschritt nicht angezeigt werden kann.
ProgressValue ist ein Double-Wert, der den Prozentsatz als Dezimalzahl angibt, also eine Zahl zwischen 0 und 1. Werte über 1 gelten als 1; Werte unter 0 gelten als 0. Der Wert Double.NaN gilt ebenfalls als 0.
Geschrieben in Tipps und Tricks, Tutorials, WPF, WPF | Tags: .NET • .NET 4 • Superbar • Taskbar • Windows 7 • WPF
Shortlink | Trackbacks/Pingbacks (1) | 1 Kommentar »
Mittwoch, 18. Mai 2011, 20:22 von Dennis Duda
Ich wollte einfach nur eine Datenbank aktualisieren, nachdem eine Zeile im DataGrid bearbeitet wurde. Ich habe mit die Events angeguckt und RowEditEnding gefunden, aber e.Row.Item enthielt noch das “alte” Item. Nach einer kurzen Suche in der MSDN Library habe ich bemerkt, dass das Silverlight-DataGrid ein RowEditEnded-Event hat, doch dem WPF-DataGrid fehlt dieses. Dasselbe trifft auf CellEditEnded zu.
Gibt es einen anderen Weg an die “neue” Zeile zu kommen, also nachdem die Zeile bearbeitet wurde?
Bei Silverlight benutzt man einfach das RowEditEnded-Event. Um das Parallele auch in WPF hinzubekommen, muss man ein wenig in die Trickkiste greifen, indem man per Dispatcher.Invoke eine Aktion ausführen lässt, die durch die niedrige Priorität erst nach dem RowEditEnding-Event ausgeführt wird. In Codeform sieht das ganze beispielsweise so aus:
VB.NET
Private Sub dg_RowEditEnding(sender As Object, e As DataGridRowEditEndingEventArgs)
Dispatcher.BeginInvoke(New Action(Function() MessageBox.Show(e.Row.Item.ToString())), System.Windows.Threading.DispatcherPriority.Background)
End Sub
C#
private void dg_RowEditEnding(object sender, DataGridRowEditEndingEventArgs e)
{
Dispatcher.BeginInvoke(new Action(() => MessageBox.Show(e.Row.Item.ToString())), System.Windows.Threading.DispatcherPriority.Background);
}
Schon hat man ein RowEditEnded-Event-Fake.
Geschrieben in Tipps und Tricks, WPF | Tags: DataGrid • Silverlight • WPF
Shortlink | Trackbacks/Pingbacks (0) | Keine Kommentare »
Freitag, 6. Mai 2011, 16:36 von Dennis Duda
Frage:
Ich schließe ein WPF-Fenster mit Me.Close(), doch es werden auch alle anderen Fenster geschlossen und das Programm beendet! Was mache ich falsch?
Antwort:
Da ist wohl der falsche Modus für das Herunterfahren eingetragen. Standardmäßig ist in den Projekteinstellungen unter Modus für das Herunterfahren “Beim Schließen des letzten Fensters” eingetragen. Bei Ihnen ist das nicht so. Um dies zu ändern, folgen Sie der Anweisung:
Doppelklicken Sie auf den Eintrag My Project ihnes Projektes im Projektmappen-Explorer. In der Registerkarte Anwendung finden Sie unten die Eigenschaften des Windows-Anwendungsframeworks. Dort stellen Sie den Modus für das Herunterfahren wieder zurück auf “Beim Schließen des letzten Fensters”. Schon sollte das Problem gelöst sein.
Geschrieben in Tipps und Tricks, WPF | Tags: Fenster • WPF
Shortlink | Trackbacks/Pingbacks (0) | Keine Kommentare »
Freitag, 6. Mai 2011, 15:57 von Dennis Duda
In Windows Forms ist es ziemlich kompliziert ein Fenster zu verschieben, welches keinen Rand hat. Das geht beispielsweise so:
VB.NET
Private ptMouseDownLocation As Point
Private Sub Form1_MouseDown(...) Handles Me.MouseDown
If e.Button = Windows.Forms.MouseButtons.Left Then
ptMouseDownLocation = e.Location
End If
End Sub
Private Sub Form1_MouseMove(...) Handles Me.MouseMove
If e.Button = Windows.Forms.MouseButtons.Left Then
Me.Location = e.Location - CType(ptMouseDownLocation, Size) + CType(Me.Location, Size)
End If
End Sub
C#
private Point ptMouseDownLocation;
private void Form1_MouseDown()
{
if (e.Button == System.Windows.Forms.MouseButtons.Left) {
ptMouseDownLocation = e.Location;
}
}
private void Form1_MouseMove()
{
if (e.Button == System.Windows.Forms.MouseButtons.Left) {
this.Location = e.Location - (Size)ptMouseDownLocation + (Size)this.Location;
}
}
Ziemlich viel Code für solch eine Aufgabe, nicht?
Zum Glück geht das in WPF viel einfacher. In das MouseLeftButtonDown-Ereignis des Fensters (oder eines Steuerelements) kommt diese eine kurze Zeile Code:
Me.DragMove()
this.DragMove();
Das wars! Das Fenster lässt sich jetzt an allen Stellen verschieben, wo kein Steuerelement im Vordergrund ist. Hat man den Code in das MouseLeftButtonDown-Ereignis eines Steuerelements eingefügt, so lässt sich das Fenster nur mit dem Steuerelement verschieben.
Geschrieben in Tipps und Tricks, WPF | Tags: Fenster • WPF
Shortlink | Trackbacks/Pingbacks (0) | Keine Kommentare »
Donnerstag, 7. April 2011, 17:33 von Dennis Duda
Die Standardknöpfe, die per Enter- und Escape-Taste gedrückt werden können, waren unter WinForms oft sehr hilfreich. Auch in der WPF gibt es dafür eine Lösung:
Setzen Sie im entsprechenden Button die Eigenschaft IsDefault für den “AcceptButton” beziehungsweise IsCancel für den “CancelButton” auf True.
Geschrieben in Tipps und Tricks, WPF | Tags: Button • WPF
Shortlink | Trackbacks/Pingbacks (0) | Keine Kommentare »
Donnerstag, 4. November 2010, 21:40 von Dennis Duda
SeriControls ist eine Sammlung aus WPF-Steuerelementen.
Bisher sind es 4 Controls, die da wären:
- SeriColorAeroBar: siehe SeriPro7Bar, allerdings mit allen Aero-Effekten.
- SeriPro7Bar: Progressbar im Stil des Pro7-”Ladebalkens”. Wechselt die Farbe, je weiter er fortgeschritten ist (gelb – grün – blau – rot)
- SeriShutDownButton: Ein Shutdownbutton mit Hover- und Klick-Effekten und einer IsEnabled=False-Einstellung. Unbegrenzt vergrößerbar da Vektorgrafik.
- SeriWin7Button: Windows 7-Button, wie man ihn auch von SevenButton von Samus Aran und Hudson Smith kennt – nur diesmal in WPF. Der Button hat Hover- und Klick-Effekte und kann beliebigen Content aufnehmen. Jetzt auch mit einer IsEnabled=False-Einstellung.
- weitere Ideen/Vorschläge gesucht!
Screenshot:

SeriControls Testprogramm
Geschrieben in Programme und Librarys | Tags: Benutzersteuerelemente • Button • Controls • Klassenbibliothek • Library • ProgressBar • Steuerelemente • WPF
Shortlink | Trackbacks/Pingbacks (0) | Keine Kommentare »
Montag, 5. Juli 2010, 18:50 von Dennis Duda
Seit heute gibt es SeriTools.de, SeriTools.net und SeriTools.com! Ich bin von Kilu auf Strato gewechselt (Lob: nach 2 Stunden Account aktiviert). Das heißt: Schnelle Seite und keine Werbung von Kilu! Im Backend/Admin-Berech hat sich auch einiges getan: WordPress 3 hat nun endlich genug Arbeitsspeicher-Reserven. Daher kann ich nun alle benötigten Funktionen wie zum Beispiel Syntax-Highlighting einbauen.
Für alle Links auf SeriTools.kilu.de hab ich eine Umleitung eingebaut: Zum Beispiel wird SeriTools.kilu.de/downloads/… zu SeriTools.de/downloads/… – automatisch! Keine Links werden unbrauchbar.
Geschrieben in News | Tags: SeriTools
Shortlink | Trackbacks/Pingbacks (0) | Keine Kommentare »
Samstag, 12. Juni 2010, 15:38 von Dennis Duda
Teil 2 der Serie: Neues in Visual Studio 2010
Komfortables Erweiterungs-System
Bis Visual Studio 2008 musste man die zur Erweiterung gehörigen Dateien in eine Ordner in den eigenen Dateien kopieren. Diesen musste man erst einmal finden oder gar selbst erstellen. Mit der Version 2010 führt Microsoft die Dateierweiterung vsix ein, die per Doppelklick eine Erweiterung in Visual Studio installiert.
Multimonitor-fähig
Durch die auf WPF basierende Oberfläche von Visual Studio 2010 lassen sich die Symbolleisten, Unterfenster etc. auch aus dem Hauptfenster schieben. So können zum Beispiel Code-Editor und Ansichts-Designer nebeneinander angezeigt werden.
Unterstützung für .net Framework 4
Natürlich gibt es die Unterstützung für das neue .net Framework 4, welches umfangreiche Verbesserungen in allen Bereichen bietet.
Neues Hilfesystem
Viele bemängelten das nicht ausgereifte Hilfe-System bis Visual Studio 2008, welches mir öfters (meistens bei ungespeicherten Projekten
) abgestürzt ist. In Visual Studio 2010 öffnet sich die Hilfe im Standardwebbrowser. Im so genannten Hilfebibliotheks-Manager lässt sich der Ort aussuchen, von dem die Hilfe geladen werden soll. Wird die Onlinehilfe ausgewählt, landet man in der MSDN Library. Wählt man hingegen die Offline-Hilfe aus, startet ein lokaler Hilfe-Webserver, der die benötigte Hilfe (wenn vorhanden) im Browser anzeigt. Im Hilfebibliotheks-Manager lassen sich Hilfe-Pakete zu verschiedenen Themenbereichen herunterladen. Insgesamt sind es über 13 GB an Hilfedaten.
Profilerstellung
Die Profilerstellung ist etwas, das ich mir schon lange gewünscht habe: Die Analyse der Prozessorauslasung und des Speicherverbrauchs des gesamten Programms beziehungsweise einzelner Codezeilen. Die Ergebnisse werden in Tabellen und Diagrammen anschaulich dargestellt. Auch lassen sich die Parallelität (Threads, die auf andere Threads warten) und die Instrumentation (Funktionsaufrufanzahl sowie die zeitliche Steuerung) messen und überprüfen.
Programmversionen
Visual Studio Standard gibt es nicht mehr, dafür geht es nach Professional noch weiter: Die Versionen Premium und Ultimate sind hinzugekommen. Erfreulich: Die Express-Versionen bleiben auch weiterhin kostenlos. Einen Vergleich der Versionsfeatures finden Sie unter: http://www.microsoft.com/germany/visualstudio/products/features.aspx
Geschrieben in Tipps und Tricks, Visual Studio | Tags: Visual Studio 2010
Shortlink | Trackbacks/Pingbacks (0) | Keine Kommentare »
Dienstag, 11. Mai 2010, 15:42 von Dennis Duda
Willkommen zu meiner Reihe zu den Neuerungen von Visual Studio 2010. In dieser Reihe finden Sie alle mir bekannten neuen Features in Visual Studio 2010.
Neues Icon

Visual Studio 2010 Icon
Eine der offensichtlichsten Neuerungen ist das Icon. Es ist in Blau-Violett gehalten und – anders als das alte Logo – rund. Es sieht aus wie das Unendlich-Zeichen ∞.
Neue Benutzeroberfläche
Da die GUI (Graphical User Interface, Grafische Benutzeroberfläche) jetzt auf WPF basiert, sind die Möglichkeiten des Desgins unvorstellbar groß. Es kann praktisch jede Art von Grafikelementen in die Oberfläche – einschließlich des Editors – eingebracht werden. Visual Studio hat nun eine blau-graue, sehr schöne Oberfläche. Alle Menüpunkte sind an ihrem gewohnten Platz, sodass sich auch Umsteiger bestens zurechtfinden werden.
Neue Startseite
Die Startseite wurde kräftig überarbeitet. Es finden nun Informationen zu ausgewählten Themen in den Kategorien Erste Schritte und Leitfäden & Ressourcen Platz sowie die aus älteren Versionen von Visual Studio bekannten RSS-Feed-Nachrichten. Unter Zuletzt geöffnete Projekte lassen sich einzelne Projekte anpinnen sowie aus der Liste löschen.
Neuer Neues Projekt-Dialog
Der Neues Projekt-Dialog ist nun Übersichtlicher gestaltet. Es gibt Sortier- und Suchmöglichkeiten und einen Zugriff auf die Onlinevorlagen in der Visual Studio Gallery.
Verbesserter Editor (allgemein)
Durch die WPF-GUI hat der Editor einige neue Funktionen bekommen. Zum Beispiel werden zusammengehörige Begriffe hervorgehoben, wenn der Tastaturcursor auf ihnen ist (z.B. Class und End Class). Die Standard-Schriftart ist jetzt Consolas, die besonders gut zu lesen ist, obwohl sie eine feste Buchstabenbreite hat. Da WPF vektorbasiert ist, lässt sich der Editor – entweder per Mausrad oder manuell in der linken unteren Ecke – beliebig von 20% bis 400% zoomen. Über verschiedene Erweiterungen wie zum Beispiel Image Insertion oder XAML Intellisense Presenter lassen sich Bilder in den Code einfügen bzw. die XAML-IntelliSense-Funktion erweitern.
Verbesserter Editor (XAML-Spezifisch)
Vor allem der XAML-Editor hat einige neue Features. So gibt es jetzt IntelliSense für Bindings und Namespace-Definitionen.
Verbesserter WPF-Designer
Ein großer Kritikpunkt an Visual Studio 2008 war der miserable WPF-Designer. Dieser hatte keine Unterstützung für Bindings, von Farbverläufen etc. ganz zu schweigen. In Visual Studio 2010 wurde dieser an den komfortablen Expression Blend-Designer angepasst.
Geschrieben in Tipps und Tricks, Visual Studio | Tags: Visual Studio 2010
Shortlink | Trackbacks/Pingbacks (0) | Keine Kommentare »