Silverlight 3 中 DynamicResource 和基于元素的画笔的替代品是什么?

发布于 2024-07-27 05:37:35 字数 1368 浏览 1 评论 0原文

我需要一个可以更改的自定义 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 的单向绑定 - 希望这对遇到相同问题的其他人有用。
对于给定的示例,仍然需要将 VisualBrush 功能替换为适用于 Silverlight 的功能。

I need to have a custom UI element that can be changed, such as the colour and text used in the application but as a resource - in WPF I can use a DynamicResource to assign brushes, strings etc, however I need to implement this in Silverlight 3 - how can I do this as a StaticResource will not do, and as another question I have a resource which is made of other UI-Elements like Rectangles. See example from my existing 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>

I have also had an issue with replicating the OuterGlowEffect, but at least this can be done with a compiled DirectX effect so can leave this out if needed.


I think Data Bindings will be a good solution to dynamic content as can create a Class which
stores the visual data I need and this can be a One-way binding to update the UI - hopefully this may be useful to others with the same issue.
Still need to replace VisualBrush functionality with something that will work in Silverlight for the given example.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文