Мне нужен пользовательский элемент пользовательского интерфейса, который можно изменить, например цвет и текст, используемые в приложении, но в качестве ресурса. В WPF я могу использовать DynamicResource для назначения кистей, строк и т. Д., Однако мне нужно реализовать это в Silverlight 3 - как я могу это сделать, поскольку StaticResource не будет делать, и как еще один вопрос, у меня есть ресурс, который сделан из других элементов пользовательского интерфейса, таких как Rectangles. Смотрите пример из моего существующего 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, поэтому можно пропустить это при необходимости.
Я думаю, что привязки данных будут хорошим решением для динамического контента, поскольку могут создать класс, который
хранит визуальные данные, которые мне нужны, и это может быть односторонняя привязка для обновления пользовательского интерфейса - надеюсь, это может быть полезно для других с такой же проблемой.
Еще нужно заменить функциональность VisualBrush чем-то, что будет работать в Silverlight для данного примера.