Каковы альтернативы Silverlight 3 для DynamicResource и кистей на основе элементов? - PullRequest
1 голос
/ 12 июля 2009

Мне нужен пользовательский элемент пользовательского интерфейса, который можно изменить, например цвет и текст, используемые в приложении, но в качестве ресурса. В 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 для данного примера.

...