Как изменить изображение, когда кнопка отключена? - PullRequest
11 голосов
/ 14 мая 2010

Я пытаюсь показать другое изображение, когда кнопка отключена; Я думал, что это будет легко с триггерами.

Однако мне не удалось заставить источник изображения переключаться на отключенное изображение, когда кнопка отключена. Я попытался установить триггеры как на изображении, так и на кнопке. Что не так с тем, что у меня ниже? Как изменить источник изображения, когда кнопка включена / отключена?

<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>

1 Ответ

23 голосов
/ 14 мая 2010

Да, этот всплывает совсем немного.

Любое свойство, которое явно установлено в объявлении объекта, не может быть изменено в стиле. Так как вы установили свойство 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...