Вы должны войти, чтобы создавать сообщения и темы.

Как изменять картинку при наведении курсора в XAML?

Здравствуйте, я не нашёл отдельной темы по XAML, так что пишу сюда. Я делаю кастомную GUI и в момент когда надо было делать кнопки закрыть, свернуть, развернуть, я столкнулся с проблемой. 
Я написал вот такой код.

<Image Name="close" Width="20" Height="20" Margin="480,0,0,430" Cursor="Hand">
<Image.Style>
<Style TargetType="{x:Type Image}">
<Setter Property="Source" Value="/YourAssembly;component/inz/krest_neact.xaml"/>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Source" Value="/YourAssembly;component/inz/krest_act.xaml"/>
</Trigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>

Я решил использовать вместо кнопки картинку, при наведении на неё мыши, она чуть светлела, что бы пользователь видел что на неё можно нажать. Вроде бы я все сделал правильно, но появляется такая ошибка. System.Windows.Markup.XamlParseException: ""Предоставление значения для "System.Windows.Baml2006.TypeConverterMarkupExtension" вызвало исключение.": номер строки "14" и позиция в строке "26"."
В роле картинок я решил использовать XAML файл, у меня есть подозрения что проблема из-за этого, но как по-другому использовать векторную графику, я не придумал. Все картинки отмечены, как ресурсы. Вот ссылка на весь проект, sln файл может не открывается, лучше открывайте csproj. Спасибо, я надеюсь вы поняли мою проблему,

Андрей,  Привет.  x:Type Image - это по идее System.Windows.Controls.Image . Property="Source" которого System.Windows.Media.ImageSource . Соответственно туда без преобразования можно поместить только его производные классы (наследники).

Я возможно поторопился с ответом. Просто проект что-то не получается открыть.

Андрей, ✋ Если тебя интересует похожий результат.

Gif


Необходимо добавлять через словарь ресурсов.

Код

    <Grid>
        <Border Background="White">
            <Border>
                <Image >
                    <Image.Style>
                        <Style TargetType="{x:Type Image}">
                            <Setter Property="Source" Value="{StaticResource krest_actDrawingImage}"/>
                            <Style.Triggers>
                                <Trigger Property="IsMouseOver"  Value="True">
                                    <Setter Property="Source" Value="{StaticResource krest_neactDrawingImage}"/>
                                </Trigger>
                            </Style.Triggers>
                        </Style>
                    </Image.Style>
                </Image>
            </Border>
        </Border>



<Application x:Class="WpfApp1.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:local="clr-namespace:WpfApp1"
             StartupUri="MainWindow.xaml">
    
    
    <Application.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="Dictionary1.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Application.Resources>
</Application>

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

     DrawingImage x:Key="krest_actDrawingImage">
//остальной код
    </DrawingImage>
    <DrawingImage x:Key="krest_neactDrawingImage">
//остальной код
    </DrawingImage>
/// код xaml ресурсов

</ResourceDictionary>



Viktor, Большое спасибо. Но я точно знаю, что это делается легче, в интернете полно примеров. Просто у меня почему-то они не работают.