Wie Hinzufügen eines Toolbox Icon für Ihre Silverlight Control
Change History:
- zuerst auf 2008.01.21 für Silverlight 2/VS2008/Toolkit Dezember 2008 Release erschienen.
- 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 Toolbox Symbole in Visual Studio und Blend. Dezember 2008 Veröffentlichung von Silverlight Toolkit fügte hinzu, dass für Toolkit steuert auch, wie in meinem vorherigen Post beschrieben Design Time Features in Silverlight Toolkit :
Dieser Beitrag erklärt, wie es in Silverlight 2 SDK ist getan, und im Dezember 2008 Veröffentlichung des Silverlight Toolkit.
Control-Icons in Run Time Assembly
Die im Dezember 2008 Release von Silverlight Toolkit gezeigt, wie zu den Hilfsfunktionen Symbole für die Kontrollen ohne Verwendung einer Design-Zeit Assembly einbetten.
Öffnen Silverlight.Controls.sln in Visual Studio (siehe vorherigen Post Design Time Feature-Implementierung in Silverlight Toolkit für mehr Informationen darüber, wie das Toolkit Quelle download):
Oder öffnen Sie 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 Sie Microsoft.Windows.Controls.dll in Reflektor:
Alle drei zeigen, dass die eigene Toolbox Symbole eingebettet sind Ressourcen in der Laufzeit der Montage Microsoft.Windows.Controls.dll, mit einer bestimmten Namenskonvention. Nehmen Sie vor Microsoft.Windows.Controls.Microsoft.Windows.AutoCompleteBox.Icon.png als Beispiel:
- Die erste Microsoft.Windows.Controls ist die Stammnamespace, in controls.csproj Datei mit Zeile angegeben: <RootNamespace> System.Windows.Controls </ RootNamespace>
- Die nächste Microsoft.Windows.Controls.AutoCompleteBox ist der vollständig qualifizierte Name der AutoCompleteBox Klasse, einschließlich Namespace aber nicht Montage.
- Der Rest des Namens, Icon.png, geben Sie das Symbol Ressourcen-Typ, wie weiter unten erläutert werden.
Control-Icons in Design Time Assembly
Die Silverlight 2 SDK demonstriert das Konzept der Einbettung Kontrolle Symbole in Entwurfszeit Montage.
Öffnen System.Windows.Controls.Design.dll in Reflektor (es ist unter% ProgramFiles% \ Microsoft SDKs \ Silverlight \ v2.0 \ Libraries \ Client installiert ist):
Nehmen Sie vor Controls.Design.Icons.Calendar.bmp als Beispiel:
- Controls.Design ist die Stammnamespace, in seiner CSPROJ-Datei mit der Linie <RootNamespace> Controls.Design </ RootNamespace> angegeben
- Icons ist der Unterordner, wo die Calendar.bmp Datei befindet sich im Source-Tree
- Calendar.bmp ist der Name des Symbols Ressource-Datei in Quellbaum
Control-Icon Ressource Naming Convention
Also von beiden oben genannten Beispielen können wir sehen, dass benutzerdefinierte Toolbox Symbole für die Kontrollen Ressourcen in beiden Laufzeit-Einheit (so brauchen Sie nicht zu einem Design-Zeit Montage Schiff) oder Design-Zeit Montage eingebettet sind (so haben Sie Flexibilität, um Symbole ändern Wie lokalisieren sie für eine andere Kultur, ohne die Laufzeit der Montage). Die Tools (Visual Studio 2008 SP1 jetzt) versuchen, die Symbole auf einer speziellen Namenskonvention basieren zu finden:
- Suche nach Ressourcen, deren Dateinamen ohne Erweiterung entspricht dem Typ Name des Steuerelements, einschließlich des Namespaces, mit einem "{XAML | BMP | PNG | GIF | JPG | JPEG} [icon *]..".
- Beachten Sie, dass Unterverzeichnisse der Namespace, in dem eingebetteten Ressourcen gefunden werden beeinflussen. Zum Beispiel sind die Symbole Toolkit unter einer Microsoft.Windows.Controls Unterordner gelegt, zu vermeiden, dass diese lange Zeichenfolge in allen Symboldateinamen, während die SDK setzen alle Symbole unter Icons Unterordner.
- Unterstützte und Dateitypen sind: XAML, BMP, GIF, JPG, JPEG und PNG
- Empfohlene Bildgröße für Bitmap-basierte Datei-Formate ist 64 × 64.
- Der [. Icon *] in der Namenskonvention ist optional und ermöglicht es Ihnen, mehrere Größen des Bildes, die als Symbol verwendet wird anzugeben. Das Spiel folgt den folgenden Algorithmus:
- Vector XAML
- Wenn es eine exakte Übereinstimmung der Größe (beide Dimensionen) verwenden
- Verwenden Sie die größte Übereinstimmung von Größe und Seitenverhältnis auf
- Wenn eine bestimmte Ressource-Datei nicht gültig ist XAML oder eine gültige Image-Datei, wird das nächste Spiel verwendet werden, bis eine gefunden werden.
- Wenn ein Bild nicht in den gleichen Namensraum wie die Steuerung, eine lose Match auf dem Typnamen Basis gefunden allein für gegen alle Ressourcen gesucht werden, wie in der SDK Fall.
- Verschiedene Hosts verwenden unterschiedliche Bildgrößen für ihre Toolboxsymbol.
- Blend verwendet 24 × 24 für ihre Größe und 12 × 12 für ihre geringe Größe (ich glaube nicht, dass dies in Blend 2 SP1 funktioniert).
- Cider (Visual Studio) verwendet 16 x 16 bmp-Dateien.
Die Blog-Beitrag Die Angabe einer Toolbox Icon für ein Control in WPF-Designer beschreibt die Namenskonvention in mehr Details.
Update für Blend3 & VS2010
Da dieser Beitrag wurde erstmals am 2008.01.21 veröffentlicht, haben wir zwei wichtige Verbesserungen bei der Kontrolle Ikonen:
- Blend 3 zeigt Symbole für die Kontrollen zu: big icons (24 × 24) in Asset Library, und kleine Ikonen (12 × 12) in Objekte und Zeitachsen. Siehe Silverlight Design Time: Toolkit Juli 2009 Release Update für weitere Informationen.
- Sie können die Steuerung (und die zugehörigen Symbole) mit Blend 3 und Visual Studio 2010 zu registrieren. 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 erweiterte Namenskonvention für Design-Zeit-Baugruppen. Bitte beachten Sie, dass die Suche nach Symbol-Ressource in umgekehrter Reihenfolge der Ladereihenfolge der Design-Zeit-Metadaten, dh, wird Blend für eingebettetes Symbol Ressource für eine Steuerung mit oben-Symbol Ressource Namenskonvention *. Expression.Design *. dll ersten Suche; nur, wenn es scheitert, wird Blend-Suche die gemeinsame Gestaltung *. *. dll Sekunde und nur dann, wenn, wenn nicht wieder wird sie suchen die entsprechende Runtime-DLL für den Embedded-Symbol Ressource, und wenn alle gescheitert sind, Blend wird das Standard-Icon für die Anzeige zu kontrollieren. Visual Studio 2010 funktioniert es in ähnlicher Weise, aber sucht *. VisualStudio.Design *. dll zuerst.
- Blend und Visual Studio unterstützt jetzt mehr Symbol-Format und wird das Symbol skalieren, wenn die gewünschte Größe Ressource (24 × 24 und 12 × 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:
- die vollen Namen (Namespace + Art, ex. System.Windows.Controls.Calendar) statt nur Typnamen (zB Kalender), um Unklarheiten zu vermeiden.
- stellen Symbole für Blend in geteilt. design.dll und Symbole für Visual Studio Toolbox in. VisualStudio.Design *. dlls. Auf diese Weise können VS2010 Display rechts Toolboxsymbol falls vorhanden in VisualStudio.Design *. dll,. Wenn nicht, VS2010 kann das Symbol für Blend-Last, bringen es auf 16 × 16, und zeigt sie in Toolbox.
- setzen icon Ressource in Runtime dll nur als letztes Mittel (ex, um zu vermeiden Versand eines Entwurfs Montage mit nur Symbol-Ressource).
Sie können die Kontrolle Symbol Ressource Namenskonvention in Silverlight Toolkit Quellcode :








Recent Comments