アプリケーションで使用される色やテキストなど、変更可能なカスタム UI 要素がリソースとして必要です。WPF では DynamicResource を使用してブラシや文字列などを割り当てることができますが、これを Silverlight で実装する必要があります。 3 - StaticResource では実行できないため、これを行うにはどうすればよいですか。別の質問として、Rectangles などの他の UI 要素で作成されたリソースがあります。私の既存の ResourceDictionary の例を参照してください。
<VisualBrush x:Key="Device" Stretch="Uniform">
<VisualBrush.Visual>
<Canvas Width="20" Height="36">
<Rectangle Height="36" Width="20" Fill="{DynamicResource ZuneColour}" Canvas.Left="0" Canvas.Top="0" RadiusX="1" RadiusY="1">
<Rectangle.BitmapEffect>
<OuterGlowBitmapEffect GlowColor="Black" GlowSize="2" />
</Rectangle.BitmapEffect>
</Rectangle>
<Rectangle Fill="{DynamicResource ZuneScreen}" Canvas.Left="1" Canvas.Top="1" Height="24" Stroke="#191616" Width="18"/>
<Rectangle Canvas.Left="5.5" Canvas.Top="25" Height="9" Width="9" RadiusX="3" RadiusY="3" Fill="{DynamicResource ZunePad}" Stroke="{DynamicResource ZunePadOuter}"/>
</Canvas>
</VisualBrush.Visual>
</VisualBrush>
OuterGlowEffect の複製にも問題がありましたが、少なくともこれはコンパイル済みの DirectX 効果で実行できるため、必要に応じて省略できます。
データ バインディングは、必要なビジュアル データを格納するクラスを作成できるため、動的コンテンツに対する優れたソリューションになると思います。これは、UI を更新するための一方向バインディングになる可能性があります。これが同じ問題を抱えている他のユーザーに役立つことを願っています。
この例では、VisualBrush 機能を Silverlight で動作するものに置き換える必要があります。