1

我需要有一个可以更改的自定义 UI 元素,例如应用程序中使用的颜色和文本,但作为资源 - 在 WPF 中我可以使用 DynamicResource 来分配画笔、字符串等,但是我需要在 Silverlight 中实现它3 - 我怎样才能做到这一点,因为 StaticResource 不会这样做,作为另一个问题,我有一个由其他 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 的单向绑定 - 希望这可能对其他有相同问题的人有用。
对于给定的示例,仍然需要用可以在 Silverlight 中工作的东西替换 VisualBrush 功能。

4

0 回答 0