To, co się z tobą dzieje, jest normalne. Gdy utworzysz przycisk, użyje on jego domyślnych właściwości na wypadek, gdybyś go nie zmienił/nie zmienił.
W takim przypadku po utworzeniu przycisku zastępujesz właściwość Background
, ale tylko w przypadku normalnego stanu przycisku. Jeśli chcesz, aby tło zmieniało się również po najechaniu kursorem, powinieneś powiedzieć przycisk, aby to zrobić.
W tym celu proponuję zastąpić szablon przycisk użyciu stylów, takich jak to:
<Window x:Class="ButtonTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Window.Resources>
<ImageBrush x:Key="ButtonImage" ImageSource="/ButtonTest;component/Resources/ok.png"></ImageBrush>
<Style TargetType="Button">
<Setter Property="Background" Value="{StaticResource ButtonImage}"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type Button}">
<Border Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
Margin="{TemplateBinding Padding}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}" RecognizesAccessKey="True"/>
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Foreground" Value="Blue" />
<Setter Property="Cursor" Value="Hand" />
<!-- If we don't tell the background to change on hover, it will remain the same -->
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
</Window.Resources>
<Grid>
<Button Content="Button" Height="23" HorizontalAlignment="Left" Margin="84,75,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
</Grid>
</Window>
W tym przypadku, ten styl będzie stosowany do wszystkich przycisków. Można określić, który przycisk, aby zastosować styl dodając x:Key
do swojego stylu, a następnie podać go w przycisku:
<Style TargetType="Button" x:Key="ButtonStyled">
.....
<Button Style="{StaticResource ButtonStyled}" Content="Button" Height="23" HorizontalAlignment="Left" Margin="84,75,0,0" Name="button1" VerticalAlignment="Top" Width="75" />
masz jakiekolwiek eventtriggers lub kod związany, które mogą zmienić obraz? –
Nie. Obraz na przycisku nie zmieni się z żadnego miejsca. Podaję obraz w Xaml w czasie projektowania. Ale jeśli muszę zmienić obraz na wyzwalaczach, to nie ma problemu, ja też to zrobię. – WAQ
Czy umieścisz swój kod? Tworzenie przycisku i przycisku stylu. – Sonhja