2010-05-14 3 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

내가주지 그 빠른 응답을위한 try- 감사합니다, 더하기 설명과 예! –

관련 문제