2010-05-14 55 views
11

我試圖在禁用按鈕時顯示不同的圖像;我認爲觸發器很容易。如何禁用按鈕時更改圖像?

但是,當按鈕被禁用時,我還沒有能夠讓圖像源切換到禁用的圖像。我已經嘗試在圖像和按鈕上設置觸發器。我在下面有什麼問題?當按鈕被啓用/禁用時,如何更改圖像源?

<Button 
     x:Name="btnName" 
     Command="{Binding Path=Operation}" 
     CommandParameter="{x:Static vm:Ops.OpA}"> 
      <Button.Content> 
       <StackPanel> 
        <Image 
        Width="24" 
        Height="24"    
        RenderOptions.BitmapScalingMode="NearestNeighbor" 
        SnapsToDevicePixels="True" 
        Source="/MyAssembly;component/images/enabled.png"> 
         <Image.Style> 
          <Style> 
           <Style.Triggers> 
            <DataTrigger Binding="{Binding ElementName=btnName, Path=Button.IsEnabled}" Value="False"> 
             <Setter Property="Image.Source" Value="/MyAssembly;component/images/disabled.png" /> 
            </DataTrigger> 
           </Style.Triggers> 
          </Style> 
         </Image.Style> 
        </Image> 
       </StackPanel> 
      </Button.Content> 
     </Button> 

回答

23

是的,這個彈出了很多。

在對象聲明中明確設置的任何屬性都不能在樣式中更改。因爲你已經在圖像的聲明中設置了圖像的Source屬性,所以這個樣式的Setter將不會觸及它。

試試這個:

<Image 
    Width="24" 
    Height="24"    
    RenderOptions.BitmapScalingMode="NearestNeighbor" 
    SnapsToDevicePixels="True" 
    > 
    <Image.Style> 
     <Style TargetType="Image"> 
      <Setter Property="Source" 
        Value="/MyAssembly;component/images/enabled.png" /> 
      <Style.Triggers> 
       ... your trigger and setter ... 
      </Style.Triggers> 
     </Style> 
    </Image.Style> 
</Image> 
+0

我給一個試戴感謝快速反應,再加上解釋和例子! – 2010-05-14 02:07:08