切换页面时未应用 Pixelshader

问题描述

我编写了一个像素着色器,它基本上改变了其输入的颜色,以便我可以将它应用于我的应用程序中的所有图像、矩形等。 为此,我将其放入我的资源字典中:

<system:Double x:Key="Hue">0</system:Double>
<system:Double x:Key="Saturation">1</system:Double>
<system:Double x:Key="Luminosity">0</system:Double>

    <Style targettype="Rectangle" x:Key="RectangleWithShader">
        <Setter Property="Effect">
            <Setter.Value>
                <local:ColorEffect Hue="{DynamicResource Hue}" Saturation="{DynamicResource Saturation}" Luminosity="{DynamicResource Luminosity}"/>
            </Setter.Value>
        </Setter>
    </Style>

我是这样使用的:

<Rectangle Style="{StaticResource RectangleWithShader}" Fill="#00305e"/>

我使用滑块更改色调、饱和度和亮度的值:

<Slider x:Name="Slider_Hue" Maximum="255" Minimum="0" TickFrequency="1" IsSnapToTickEnabled="True" ValueChanged="Slider_Hue_ValueChanged"/>

背后的代码

private void Slider_Hue_ValueChanged(object sender,RoutedPropertyChangedEventArgs<double> e)
        {
            Double dHue = Slider_Hue.Value;
            Application.Current.Resources["Hue"] = dHue;
        }

这对于在我开始使用滑块时已经加载的元素非常有效。但是,例如,当我导航到框架内的新页面时,该页面上有一个使用我的效果的矩形,它没有应用效果。或者至少没有使用我保存在字典中的新值(此时仍然是我将它们更改为的值)。

有人知道我做错了什么吗? (当我使用矩形时将 StaticResource 更改为 DynamicResource 不应该也不行)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)