获取实际工作的绑定的运行时错误



在。net 7.0 WPF桌面应用程序中,当图像被禁用时,我使用了这种样式,将自定义灰度像素着色器应用于图像。样式在我的App.xaml文件中定义:

<Style TargetType="Image" x:Key="GrayscaleImageStyle">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Effect">
<Setter.Value>
<shaders:GrayscaleEffect Input="{Binding RelativeSource={RelativeSource Self}, Path=Source}"/>
</Setter.Value>
</Setter>
<Setter Property="Opacity" Value="0.5"/>
</Trigger>
</Style.Triggers>
</Style>

现在样式工作得很好,并且像素着色器被正确地应用到将IsEnabled设置为false的图像上。

然而我注意到,在运行时,我在输出调试窗口中得到一堆错误消息,就像这样:

System.Windows.Data Error: 40 : BindingExpression path error: 'Source' property not found on 'object' ''GrayscaleEffect' (HashCode=1132111)'. BindingExpression:Path=Source; DataItem='GrayscaleEffect' (HashCode=1132111); target element is 'GrayscaleEffect' (HashCode=1132111); target property is 'Input' (type 'Brush')

我尝试了一些事情(例如使用ImageSource到Brush转换器(从未调用过)或使用绑定对象),但无济于事。消息仍然很多,正如我提到的,即使效果完美地工作,也意味着绑定需要工作。

知道发生了什么事吗?我怎样才能摆脱这些毫无用处的消息?

我很困惑,尽管绑定显示了一个错误,但效果仍然有效,我意识到必须在内部自动设置效果的输入,所以我完全删除了绑定。瞧!效果还在;出错了!

<Style TargetType="Image" x:Key="GrayscaleImageStyle">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Effect">
<Setter.Value>
<shaders:GrayscaleEffect/>
</Setter.Value>
</Setter>
<Setter Property="Opacity" Value="0.5"/>
</Trigger>
</Style.Triggers>
</Style>

希望这对别人有帮助。

相关内容

  • 没有找到相关文章

最新更新