首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在动态资源中更新动态资源?

如何在动态资源中更新动态资源?
EN

Stack Overflow用户
提问于 2009-02-17 18:18:13
回答 2查看 11.4K关注 0票数 9

我有一个视觉画笔,它是一组形状,它的主要颜色是一个动态资源本身-所以形状是例如MyShape和颜色,由shape对象引用的MyColour。

我的问题是,当我为此更新颜色时-它只在第一次加载形状时发生(颜色需要首先设置),但是我更改了颜色,它不会更新使用该颜色的动态资源-我该如何工作?

只需要让一个动态资源在另一个动态资源中工作,并让他们都更新时,我改变了颜色。

我不知道如何让它工作-我花时间为WPF创建了一个颜色选择器,结果发现我无法更改此项目的颜色- 1-Tier资源工作时,我直接设置画笔/颜色,但不能在另一个对象或2-Tier资源中设置颜色。

编辑:我的问题似乎是在单独的资源/字典中使用它们,因为我的程序需要从类而不是窗口访问这个项目,当MyColor在单独的资源中时,上面提到的主要示例不起作用。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-02-17 18:58:33

除非我误解了情况,否则你所说的一切都很好用。我刚刚用这个Xaml尝试了一下:

代码语言:javascript
复制
<Window x:Class="ConditionalTest.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Window1" Height="300" Width="300">

    <Window.Resources>
        <SolidColorBrush x:Key="MyColor" Color="Aqua" />

        <VisualBrush x:Key="MyBrush">
            <VisualBrush.Visual>
                <Ellipse Height="50" Width="100" Fill="{DynamicResource MyColor}" />
            </VisualBrush.Visual>
        </VisualBrush>
    </Window.Resources>
    <Grid Background="{DynamicResource MyBrush}">
        <Button Height="30" Width="Auto" VerticalAlignment="Center" HorizontalAlignment="Center" Content="ChangeColor" Click="Button_Click" />
    </Grid>
</Window>

然后在单击处理程序中更改该按钮的颜色:

代码语言:javascript
复制
private void Button_Click(object sender, RoutedEventArgs e)
{
    ((SolidColorBrush)Resources["MyColor"]).Color = Colors.Purple;
}  

它的效果就像冠军一样。

票数 7
EN

Stack Overflow用户

发布于 2009-02-19 00:19:19

您是否可以发布一个示例,说明您如何尝试更改资源字典中的颜色?

当我创建一个示例应用程序并尝试更改资源值时,资源字典中的SolidColorBrush似乎已被冻结,因此无法修改。为了解决这个问题,我只需将新值设置为新的SolidColorBrush。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/558090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档