WPF Button Mouseover Image
Я учусь C # и XAML для создания приложений Windows. Я хотел создать кнопку с фоновым изображением. Но при наведении курсора на кнопку фон кнопки должен измениться на другой «выделенный». образ. Я попытался добавить фоновые изображения в Resources.resx. Мне пришлось создать пользовательскую кнопку, используя стили xaml, чтобы избавиться от эффекта подсветки по умолчанию для кнопки wpf.
Я создал пользовательскую кнопку из кода, который нашел на SO. Код (в новом словаре ресурсов):
<!-- This style is used for buttons, to remove the WPF default 'animated' mouse over effect -->
<Style x:Key="StartMenuButtons" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="0"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<!-- UPDATE THE BUTTON BACKGROUND -->
<Setter Property="Background" Value="WHAT GOES HERE" TargetName="border"/>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Что мне поставить, чтобы фон изменился на другое изображение, находится ли оно в моем resources.resx или в другом месте? (Не уверен, где поставить изображение для доступа к нему). Я искал SO, но решения, которые я нашел, были не совсем то, с чем я имею дело. Если это дублирующий вопрос, я прошу прощения.
Summary:
Как изменить фоновое изображение кнопки при наведении мыши на триггер в XAML? Куда мне поместить изображение, чтобы оно было доступно в коде триггера?
Update Это то, что я поставил в качестве триггера, но изображение не обновляется. Я удостоверился, что установил действие по созданию образа для ресурса и поместил его в папку с именемResources.
Код является:
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="/Simon;component/Resources/btn_bg_hover.jpg" />
</Setter.Value>
</Setter>
</Trigger>
Структура файла
Simon
Simon
Resources
all the images
Fonts
bin
obj
Properties
Solution
Ниже приведен полный код, позволяющий изменить изображение при наведении курсора на кнопку:
<!-- This style is used for buttons, to remove the WPF default 'animated' mouse over effect -->
<Style x:Key="StartMenuButtons" TargetType="Button">
<Setter Property="OverridesDefaultStyle" Value="True"/>
<Setter Property="Margin" Value="5"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border Name="border"
BorderThickness="0"
Background="{TemplateBinding Background}">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="border">
<Setter.Value>
<ImageBrush ImageSource="Resources/btn_bg_hover.jpg" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
Для реального изображения я поместил его вResources папка, которая находится в корневом каталоге. После импорта изображений с помощью инструмента ресурсов в Visual Studio я обновил изображениеbuild settings вResource в панели свойств.
Thanks for the solution dbaseman