我有一個簡單Button
控制包含一個Image
對象作爲其內容。我想這樣設置Image
不透明度爲0.5時Button
被禁用,以提供一個額外的視覺提示Button
狀態。'灰色'WPF按鈕圖像?
什麼是實現這一結果在XAML最簡單的方法?謝謝你的幫助。
我有一個簡單Button
控制包含一個Image
對象作爲其內容。我想這樣設置Image
不透明度爲0.5時Button
被禁用,以提供一個額外的視覺提示Button
狀態。'灰色'WPF按鈕圖像?
什麼是實現這一結果在XAML最簡單的方法?謝謝你的幫助。
在圖像樣式中使用觸發器。 (將它放在按鈕樣式中會更自然,但Button樣式不會因爲令人討厭的技術原因而輕易影響圖像,它可以在Button的ControlTemplate中完成,但這對於您在此處想要的操作來說是過度的)。
<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>
注意我們正在採取的事實的優點在這裏,當按鈕被禁用的圖像將被禁用,所以我們可以直接對圖像自身的IsEnabled屬性觸發。在其他情況下,我們想要觸發的Button屬性可能不會被圖像繼承;在這種情況下,我們需要使用具有FindAncestor RelativeSource的DataTrigger綁定到包含按鈕。
偉大的答案!接受並從我+1。 – 2010-03-28 01:23:55
魔術解決方案:)。我喜歡。 – LukTar 2016-11-07 15:56:38
這裏有一個更通用的風格,你可以申請:
<Style TargetType="Button">
<Style.Resources>
<Style TargetType="Image">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.5" />
</Trigger>
</Style.Triggers>
</Style>
</Style.Resources>
</Style>
請注意,這僅適用於圖像是按鈕的直接子項。在我的情況下,按鈕內容由StackPanel包裝,並沒有奏效。 – 2015-03-23 01:41:59
@JonePolvora謝謝你澄清。我很困惑,爲什麼我沒有從這篇文章中受益,直到我看到你的帖子。 – 2015-12-29 22:13:33
如果你想要的東西更通用的,把這個在你的資源節你的窗口或用戶控件。
<UserControl.Resources>
<Style x:Key="ImageEnabled" TargetType="Image">
<Style.Triggers>
<Trigger Property="IsEnabled" Value="False">
<Setter Property="Opacity" Value="0.25"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</UserControl.Resources>
而且在實際的按鈕只是這樣做
<Button>
<Image Source="{StaticResource LinkImage}" Style="{StaticResource ImageEnabled}"/>
</Button>
不能做這樣的工作。這爲我工作: http://stackoverflow.com/questions/4532943/icommand-canexecute-can-not-disable-button-with-image-content/11126571#11126571 – aeinstein 2012-06-20 19:32:06