Điều gì đang xảy ra với bạn là điều bình thường. Khi bạn tạo một nút, nó sẽ sử dụng các thuộc tính mặc định của nó trong trường hợp bạn không thay đổi/ghi đè chúng.
Trong trường hợp này, khi bạn tạo nút, bạn đang ghi đè thuộc tính Background
nhưng chỉ cho trạng thái bình thường của nút. Nếu bạn muốn nền để thay đổi cũng khi lơ lửng, bạn nên nói cho nút để làm như vậy.
Đối với mục đích này, tôi đề nghị bạn để ghi đè lên nút Template sử dụng phong cách, như thế này:
<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>
Trong trường hợp này, phong cách này sẽ được áp dụng cho tất cả các nút của bạn. Bạn có thể chỉ định nút đó để áp dụng phong cách bằng cách thêm một x:Key
để phong cách của bạn và sau đó xác định nó trong nút của bạn:
<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" />
Bạn có bất cứ EventTriggers hoặc mã đằng sau đó có thể thay đổi hình ảnh? –
Không. Hình ảnh trên nút sẽ không thay đổi từ bất kỳ đâu. Tôi đang chỉ định hình ảnh trong Xaml vào thời gian thiết kế. Nhưng, nếu tôi phải thay đổi hình ảnh trên bộ kích hoạt thì không có vấn đề gì, tôi cũng sẽ làm điều đó. – WAQ
Bạn có thể đăng mã của mình không? Tạo nút và nút kiểu. – Sonhja