Вот кнопка ToggleButton с 3 изображениями и всплывающим окном:
- Изображение, когда IsChecked = false.
- Изображение, когда IsChecked = true.
- Изображение для случая, когда IsMouseOver = true.
Изображения хранятся в ресурсах как BitmapImage, чтобы избежать изменения визуалов на триггерах.
Файлы изображений должны быть добавлены в ресурсы, а затем файлы, добавленные в папку «Resoruces» в проекте, должны быть отмечены как BuildAction = Resource .
Также применяет прозрачность к элементу управления изображением, когда ToggleButton IsEnabled = false;
Код:
<ToggleButton
x:Name="btnToggleImage"
Margin="5"
Width="50"
Height="50"
>
<ToggleButton.Resources>
<BitmapImage x:Key="imgNormal" UriSource="/YOURPROJECTNAME;component/Resources/YourUncheckedImage.png"/>
<BitmapImage x:Key="imgHover" UriSource="/YOURPROJECTNAME;component/Resources/YourHoverImage.png"/>
<BitmapImage x:Key="imgChecked" UriSource="/YOURPROJECTNAME;component/Resources/YourCheckedImage.png"/>
</ToggleButton.Resources>
<ToggleButton.Style>
<Style TargetType="ToggleButton">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="ToggleButton">
<Image
x:Name="PART_Image"
Source="{StaticResource imgNormal}"
/>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="true">
<Setter TargetName="PART_Image" Property="Source" Value="{StaticResource imgChecked}"/>
</Trigger>
<Trigger Property="IsMouseOver" Value="true">
<Setter TargetName="PART_Image" Property="Source" Value="{StaticResource imgHover}"/>
</Trigger>
<Trigger Property="IsEnabled" Value="false">
<Setter TargetName="PART_Image" Property="Opacity" Value="0.6"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</ToggleButton.Style>
</ToggleButton>
<Popup
x:Name="popup1"
PlacementTarget="{Binding ElementName=btnToggleImage}"
PopupAnimation="Slide"
IsOpen="{Binding ElementName=btnToggleImage, Path=IsChecked, Mode=TwoWay}"
StaysOpen="False"
MinWidth="{Binding ElementName=btnToggleImage, Path=Width}">
<Grid Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}">
<!--<ItemsPresenter/>-->
<Label Content="Hello Wolrd!"/>
</Grid>
</Popup>