我有一个视觉画笔,它是一组形状,它的主要颜色是一个动态资源本身-所以形状是例如MyShape和颜色,由shape对象引用的MyColour。
我的问题是,当我为此更新颜色时-它只在第一次加载形状时发生(颜色需要首先设置),但是我更改了颜色,它不会更新使用该颜色的动态资源-我该如何工作?
只需要让一个动态资源在另一个动态资源中工作,并让他们都更新时,我改变了颜色。
我不知道如何让它工作-我花时间为WPF创建了一个颜色选择器,结果发现我无法更改此项目的颜色- 1-Tier资源工作时,我直接设置画笔/颜色,但不能在另一个对象或2-Tier资源中设置颜色。
编辑:我的问题似乎是在单独的资源/字典中使用它们,因为我的程序需要从类而不是窗口访问这个项目,当MyColor在单独的资源中时,上面提到的主要示例不起作用。
发布于 2009-02-17 18:58:33
除非我误解了情况,否则你所说的一切都很好用。我刚刚用这个Xaml尝试了一下:
<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>然后在单击处理程序中更改该按钮的颜色:
private void Button_Click(object sender, RoutedEventArgs e)
{
((SolidColorBrush)Resources["MyColor"]).Color = Colors.Purple;
} 它的效果就像冠军一样。
发布于 2009-02-19 00:19:19
您是否可以发布一个示例,说明您如何尝试更改资源字典中的颜色?
当我创建一个示例应用程序并尝试更改资源值时,资源字典中的SolidColorBrush似乎已被冻结,因此无法修改。为了解决这个问题,我只需将新值设置为新的SolidColorBrush。
https://stackoverflow.com/questions/558090
复制相似问题