Вы создаете как изображение, так и наложение, и привязываете свойство видимости наложения к свойству IsMouseOver изображения и наложения.
Вы также можете сделать это с помощью триггеров вместо привязки.Это тоже работает.
Обновление: вот пример кода.XAML может выглядеть так:
<Grid>
<Grid.Resources>
<local:OverlayVisibilityConverter x:Key="OverlayVisibilityConverter" />
</Grid.Resources>
<Image x:Name="myImage" Source="MyImage.JPG" />
<Image x:Name="myOverlay"
Source="MyOverlay.jpg"
VerticalAlignment="Center"
Opacity="0.2">
<Image.Visibility>
<MultiBinding Converter="{StaticResource OverlayVisibilityConverter}">
<Binding ElementName="myOverlay" Path="IsMouseOver" />
<Binding ElementName="myImage" Path="IsMouseOver" />
</MultiBinding>
</Image.Visibility>
</Image>
</Grid>
Конечно, оверлей не должен быть изображением и может быть чем угодно.Я просто использовал изображение в образце.Непрозрачность может быть любой между 0 и 1.
Код для конвертера может выглядеть следующим образом:
class OverlayVisibilityConverter : IMultiValueConverter
{
public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture)
{
var isMouseOverOverlay = (bool)values[0];
var isMouseOverImage = (bool)values[1];
if (isMouseOverImage || isMouseOverOverlay)
return Visibility.Visible;
else
return Visibility.Hidden;
}
public object[] ConvertBack(object value, Type[] targetTypes, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}