Hinzufügen eines Toolbox Symbol für Ihre Silverlight Control
Change History:
- erstmals am 2008.01.21 für Silverlight 2/VS2008/Toolkit Dezember veröffentlicht 2008 Release.
- Aktualisiert am 2009.12.05 für Silverlight 4/VS2010/Blend3/Toolkit November 2009 Release.
Controls in Silverlight Runtime (ex. system.windows.dll) und SDK (ex. system.windows.controls.dll) haben schöne Icons Toolbox in Visual Studio und Blend. Dezember 2008 Veröffentlichung von Silverlight Toolkit fügte hinzu, dass für die Toolkit-Steuerelemente auch als post beschrieben in meinem früheren Design-Time-Features in Silverlight Toolkit :
Dieser Beitrag erläutert, wie es in Silverlight 2 SDK ist getan, und im Dezember 2008 Veröffentlichung der Silverlight Toolkit.
Control Icons in Run Time Versammlung
Die im Dezember 2008 Release von Silverlight Toolkit gezeigt, wie die Einbettung von Hilfsfunktionen Symbole für die Kontrollen ohne Verwendung eines Design-Zeit Montage.
Open Silverlight.Controls.sln in Visual Studio (siehe vorherigen Post Design Time Feature-Implementierung in Silverlight Toolkit für weitere Informationen zum Download der Source-Toolkit):
Oder öffnen Controls.csproj in notepad:
<ItemGroup>
<EmbeddedResource Include="Microsoft.Windows.Controls.AutoCompleteBox.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.DockPanel.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Expander.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Label.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.TreeView.Icon.png" />
<EmbeddedResource Include="Microsoft.Windows.Controls.Viewbox.Icon.png" />
</ ItemGroup>
Oder öffnen Microsoft.Windows.Controls.dll im Reflektor:
Alle drei zeigen, dass die benutzerdefinierte Symbole Toolbox werden die Ressourcen in der Laufzeit der Montage Microsoft.Windows.Controls.dll eingebettet, mit einer bestimmten Namenskonvention. Nehmen Microsoft.Windows.Controls.Microsoft.Windows.AutoCompleteBox.Icon.png oben als Beispiel:
- Die erste ist die Microsoft.Windows.Controls Stammnamespace,> angegebene Datei mit controls.csproj in line: <RootNamespace> System.Windows.Controls </ RootNamespace
- Die nächste Microsoft.Windows.Controls.AutoCompleteBox ist der vollständig qualifizierte Name der Klasse AutoCompleteBox, einschließlich, aber nicht Namespace Montage.
- Der Rest des Namens, icon.png, geben Sie das Symbol-Ressource-Typ, wie später noch erläutert werden.
Control Icons im Design Time Versammlung
Die Silverlight 2 SDK demonstriert das Konzept der Einbettung Kontrolle Symbole im Design der Zeit Montage.
Open System.Windows.Controls.Design.dll Reflektor (es ist unter% ProgramFiles% installiert \ Microsoft SDKs \ Silverlight \ v2.0 \ Bibliotheken \ Client):
Nehmen Controls.Design.Icons.Calendar.bmp oben als Beispiel:
- Controls.Design ist das Stammnamespace, angegeben in ihrer csproj Datei mit der Linie <RootNamespace> Controls.Design </ RootNamespace>
- Icons ist der Unterordner, wo die Calendar.bmp Datei wird in Quellcode
- Calendar.bmp ist der Name des Symbols Ressource-Datei in Quellbaum
Icon Control Resource Naming Convention
So von oben zwei Beispiele können wir sehen, dass benutzerdefinierte Symbole für Toolbox-Steuerelemente sind Ressourcen entweder Laufzeit Assembly eingebettet (so brauchen Sie nicht zu einem Design-Zeit Montage Schiff) oder Design-Zeit Assembly (damit Sie flexibel sind, Symbole zu ändern , wie es für die Lokalisierung einer anderen Kultur, ohne Berührung der Laufzeit Montage). Die Tools (Visual Studio 2008 SP1 jetzt) versuchen, die Symbole auf einer speziellen Namenskonvention basiert zu finden:
- Suche nach Ressourcen, deren Dateinamen ohne Erweiterung der Typ Name des Steuerelements, einschließlich des Namespace, mit einem "[. Icon *]. (XAML | bmp | PNG | GIF | JPG | JPEG)".
- Beachten Sie, dass die Unterverzeichnisse Namensraum, in dem Ressourcen eingebettet beeinflussen, sind gefunden. Zum Beispiel sind die Icons Toolkit unter einer Microsoft.Windows.Controls Unterordner setzen, zu vermeiden, dass diese lange Zeichenfolge in das Symbol Dateinamen, während die SDK setzen alle Icons unter einem Unterordner Icons.
- Unterstützte Erweiterungen und Dateitypen sind: XAML, BMP, GIF, JPG, JPEG und PNG
- Empfohlene Bildgröße für Bitmap-basierten Dateiformate ist 64 × 64.
- Der [. Icon *] in der Namenskonvention ist optional und ermöglicht Ihnen, mehrere Größen des Bildes, die als Symbol verwendet wird, angeben. Das Spiel folgt den folgenden Algorithmus:
- Vector XAML
- Wenn es eine exakte Übereinstimmung der Größe (beide Dimensionen) verwenden
- Verwenden Sie den nächsten Match auf Größe und das Seitenverhältnis basierend
- Wenn eine bestimmte Ressource-Datei ist nicht gültig XAML oder eine gültige Bild-Datei, das nächste Spiel wird verwendet, bis einer gefunden werden.
- Wenn ein Bild ist nicht im gleichen Namensraum wie die Kontrolle, ein lockeres Spiel auf dem Typnamen alone Basis gefunden werden suchten nach gegen alle Ressourcen, wie im Fall SDK.
- Verschiedenen Hosts verwenden unterschiedliche Bildgrößen für ihre Toolbox-Symbol.
- Blend verwendet 24 × 24 für ihre Größe 12 × 12 und für ihre kleine Größe (ich glaube nicht, dass dies in Blend 2 SP1 arbeiten).
- Cider (Visual Studio) verwendet 16 × 16 bmp-Dateien.
Die Blog-Post Angeben einer Toolbox Icon für ein Steuerelement in WPF Designer beschreibt die Namenskonvention mehr Details.
Update für Blend3 & VS2010
Seit diesem Beitrag wurde erstmals am 2008.01.21 veröffentlicht, haben wir zwei wesentliche Verbesserungen hinsichtlich der Kontrolle Symbole:
- Blend 3 zeigt die Symbole, um Kontrollen zu: große Symbole (24 × 24) in Asset Library, und kleine Symbole (12 × 12) in Objekten und Timeline. Siehe Silverlight Design Time: Toolkit Juli 2009 Release Update für mehr Informationen.
- Sie können Ihre Kontrollen (und die dazugehörigen Symbole) mit Blend 3 und Visual Studio 2010. Siehe Register Silverlight Controls mit Visual Studio und Blend für weitere Informationen.
- Die Namenskonvention für Symbol-Ressource wird zusammen mit der Namenskonvention für Design-Zeit Baugruppen überarbeitet. Siehe Silverlight Design Time Assemblies für weitere Informationen über die Erhöhung der Namenskonvention für Design-Zeit Baugruppen. Bitte beachten Sie, dass die Suche nach Symbol-Ressource wird in umgekehrter Reihenfolge der Lade-Reihenfolge der Design-Zeit Metadaten, dh Blend wird zunächst die Suche nach eingebettetes Symbol Ressource für eine Steuerung mit oben Symbol Ressource Namenskonvention *. Expression.Design *. dll; nur, wenn sie scheitert, wird die gemeinsame Suche Blend Design *. *. dll Sekunde, und nur dann, wenn erneut fehlschlägt, wird sie die entsprechenden Runtime-DLL für den Embedded-Symbol Ressource suchen, und wenn alle daran gescheitert, Blend wird das Standard-Icon für die Anzeige Steuerung. Visual Studio 2010 wird es in ähnlicher Weise, aber sucht VisualStudio.Design *. *. dll zuerst.
- Blend und Visual Studio unterstützt jetzt mehr Symbol-Format, und wird das Symbol Maßstab, wenn die gewünschte Ressource Größe (24 × 24 × 12 und 12 für Blend, und 16 × 16 für VS) nicht gefunden wird.
Silverlight Toolkit verwenden folgende Namenskonventionen für die Einbettung von Icon-Ressourcen:
- Verwendung vollständigen Namen (Namespace + Art, ex. System.Windows.Controls.Calendar) statt nur Typenbezeichnungen (zB Kalender), um Unklarheiten zu vermeiden.
- , Icons für Blend in geteilt. design.dll und Symbole für Visual Studio-Toolbox in. VisualStudio.Design *. DLLs. Auf diese Weise kann das Recht VS2010 Toolbox-Symbol angezeigt, wenn ein solcher besteht in. VisualStudio.Design *. dll, wenn nicht, VS2010 kann das Symbol für Blend Belastung, verkleinere sie auf 16 × 16, und zeigt es in der Toolbox.
- legte Symbol Ressource in Runtime DLL nur als letztes Mittel (ex, zu vermeiden Versand eines Design-Zeit Montage mit nur Symbol-Ressource).
Sie sehen die Kontrolle Symbol Ressource Namenskonvention in Silverlight Toolkit Quellcode :








Check http://www.ArtistsValley.com für einige umfangreiche XAML und Silverlight Icons zu einem tollen Preis!