当鼠标在c# WPF绑定时改变图像
本文关键字:定时 改变 图像 绑定 WPF 鼠标 | 更新日期: 2023-09-27 18:05:46
我正在WPF中做一个程序,该程序在网格内放置了不同的矩形。它们都有一个图像资源绑定,使图像在整个程序中动态变化。这和2048年很相似。现在我想让这个矩形改变它的图像源当鼠标在它上面的时候。就像我已经做了一个imagesource绑定,我不知道怎么做。
<ListBox Grid.Row="1" ItemsSource="{Binding Tiles}">
<ListBox.ItemTemplate>
<DataTemplate>
<Border Background="{Binding Converter={StaticResource BackgroundColor2048Converter}}" Width="106.25px" Height="106.25px" CornerRadius="3" BorderThickness="1" VerticalAlignment="Stretch" Focusable="False" HorizontalAlignment="Stretch" Margin="7">
<Rectangle Width="104.25px" Height="104.25px" MouseEnter="Rectangle_MouseEnter" MouseLeave="Rectangle_MouseLeave" >
<Rectangle.Fill>
<ImageBrush ImageSource="{Binding Converter={StaticResource ImageBackgroundColor2048Converter}, Mode=OneWay}"/>
</Rectangle.Fill>
</Rectangle>
</Border>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
这是关于矩形的xaml代码。图像资源转换器工作,并用于在游戏期间更改图像。但是现在我想在mouseenter事件触发时也更改该图像。这就是我完全不知道怎么做的地方。
您可以通过触发器:
<Rectangle Width="104.25px" Height="104.25px" MouseEnter="Rectangle_MouseEnter" MouseLeave="Rectangle_MouseLeave" >
<Rectangle.Style>
<Style TargetType="{x:Type Rectangle}">
<Setter Property="Fill" >
<Setter.Value>
<ImageBrush ImageSource="{Binding Converter={StaticResource ImageBackgroundColor2048Converter}, Mode=OneWay}"/>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="Rectangle.IsMouseOver" Value="True">
<Setter Property="Fill" >
<Setter.Value>
<!-- Whatever you want here -->
<ImageBrush ImageSource="{Binding MouseOverImageUri}" />
</Setter.Value>
</Setter>
</Trigger>
</Style>
</Rectangle.Style>
</Rectangle>
请注意,您必须通过样式设置默认值。这样做的原因是触发器覆盖样式,但直接应用的属性覆盖触发器。在本例中,您希望触发器获胜。