Sử dụng trình kích hoạt theo kiểu Hình ảnh. (Nó sẽ tự nhiên hơn khi đặt nó theo kiểu Nút, nhưng kiểu Nút không thể dễ dàng ảnh hưởng đến Ảnh vì lý do kỹ thuật gây phiền nhiễu. Có thể có thể được thực hiện trong ControlTemplate của Nút nhưng quá mức cho những gì bạn muốn ở đây.)
<Button>
<Image Source="something.png">
<Image.Style>
<Style TargetType="Image">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.5" />
</Trigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
</Button>
Lưu ý rằng chúng tôi đang tận dụng thực tế là Hình ảnh sẽ bị vô hiệu hóa khi Nút bị vô hiệu hóa, vì vậy chúng tôi có thể kích hoạt trực tiếp trên thuộc tính IsEnabled của riêng ảnh. Trong các trường hợp khác, thuộc tính Button mà chúng ta muốn kích hoạt có thể không được thừa hưởng bởi Image; trong trường hợp đó, chúng ta cần sử dụng một DataTrigger với FindAncestor RelativeSource để liên kết với nút chứa.
Không thể làm cho công việc này. Điều này làm việc cho tôi: http://stackoverflow.com/questions/4532943/icommand-canexecute-can-not-disable-button-with-image-content/11126571#11126571 – aeinstein