Wpf 当IsEnabled为false时更改图像源

Wpf 当IsEnabled为false时更改图像源,wpf,xaml,Wpf,Xaml,每当图像被禁用/启用时,我尝试更改图像的源属性。 我签出,这是有效的,每当图像被禁用的不透明度是改变。但是,只要我尝试设置Source属性,它就是不起作用。它被忽略了。 这是我的标记: 我错过什么了吗?甚至可以更改源属性吗?因此,只有在不为源属性设置,而是通过样式设置的情况下,此操作才有效: <Image Width="75"> <Image.Style> <Style TargetType="Image">

每当图像被禁用/启用时,我尝试更改图像的源属性。 我签出,这是有效的,每当图像被禁用的不透明度是改变。但是,只要我尝试设置Source属性,它就是不起作用。它被忽略了。 这是我的标记:


我错过什么了吗?甚至可以更改源属性吗?

因此,只有在不为
源属性设置,而是通过样式设置的情况下,此操作才有效:

<Image Width="75">
    <Image.Style>
        <Style TargetType="Image">
            <Setter Property="Source"
                    Value="/My_Project;component/Images/countdown.png"/>    
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Source"
                        Value="/My_Project;component/Images/countdown.disabled.png"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>

因此,只有在不为
源属性设置a,而是通过样式设置它时,此选项才会起作用:

<Image Width="75">
    <Image.Style>
        <Style TargetType="Image">
            <Setter Property="Source"
                    Value="/My_Project;component/Images/countdown.png"/>    
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Source"
                        Value="/My_Project;component/Images/countdown.disabled.png"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>

您的问题是您在声明
图像时对
图像进行了“硬编码”。Source
值。您还需要将其移动到
样式。试试这个:

<Image Width="75">
    <Image.Style>
        <Style TargetType="Image">
            <Setter Property="Source" 
                Value="/My_Project;component/Images/countdown.png"/>
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Source" 
                        Value="/My_Project;component/Images/countdown.disabled.png"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>

这是因为WPF有许多不同的方法来更新
dependencProperty
,因此有一个指定哪些源应该能够覆盖从其他源所做的更改的方法。根据此列表,本地设置值将覆盖
样式触发器
中的一个设置,但
样式触发器
中的一个设置将覆盖
样式设置器
中的一个设置


请参阅链接页面以了解更多信息。

您的问题是您在声明
图像时对
图像进行了“硬编码”。Source
值。您还需要将其移动到
样式。试试这个:

<Image Width="75">
    <Image.Style>
        <Style TargetType="Image">
            <Setter Property="Source" 
                Value="/My_Project;component/Images/countdown.png"/>
            <Style.Triggers>
                <Trigger Property="IsEnabled" Value="False">
                    <Setter Property="Source" 
                        Value="/My_Project;component/Images/countdown.disabled.png"/>
                </Trigger>
            </Style.Triggers>
        </Style>
    </Image.Style>
</Image>

这是因为WPF有许多不同的方法来更新
dependencProperty
,因此有一个指定哪些源应该能够覆盖从其他源所做的更改的方法。根据此列表,本地设置值将覆盖
样式触发器
中的一个设置,但
样式触发器
中的一个设置将覆盖
样式设置器
中的一个设置


有关这方面的更多信息,请参阅链接页面。

LOL!我们在这里写的是相同的答案吗+1还提到了依赖属性值优先级。太好了,谢谢@谢里登:对不起,我不能把你的回答也标记为接受,我只是长期选择了第一个:)谢谢你们两个@DavideDeSantis,我非常高兴您能将公认的答案授予您喜欢的任何人,但仅供将来参考,我们应该授予最佳答案,而不是第一个答案。@Sheridan我知道,您当然是对的。我只是想你基本上写了同样的东西,但我又读了一遍,你的答案比克莱门斯的更详细一点,所以你来吧,更正:)我不是想让你改变这个问题的公认答案。。。这就是为什么我在我的评论中只放了一些供将来参考的东西。哈哈!我们在这里写的是相同的答案吗+1还提到了依赖属性值优先级。太好了,谢谢@谢里登:对不起,我不能把你的回答也标记为接受,我只是长期选择了第一个:)谢谢你们两个@DavideDeSantis,我非常高兴您能将公认的答案授予您喜欢的任何人,但仅供将来参考,我们应该授予最佳答案,而不是第一个答案。@Sheridan我知道,您当然是对的。我只是想你基本上写了同样的东西,但我又读了一遍,你的答案比克莱门斯的更详细一点,所以你来吧,更正:)我不是想让你改变这个问题的公认答案。。。这就是为什么我在我的评论中只放了一个供将来参考的地方。我喜欢你的代码格式,它可以避免水平滚动条:-)我们可以在这个网站上使用自动文本包装。。。它早就过期了我喜欢你避免水平滚动条的代码格式:-)我们可以在这个网站上使用自动文本包装。。。它早就过期了