繁体   English   中英

使用绑定c#WPF结束鼠标时更改图像

[英]Change Image when mouse is over with Binding c# WPF

我正在WPF中执行一个程序,该程序在网格中放置了不同的矩形。 它们都有一个imagesource绑定,使图像在整个程序中动态变化。 它类似于2048。问题是,现在我想让此矩形在鼠标悬停在其上方时更改其图像源。 就像我已经做过图像源绑定一样,我不知道该怎么做。

<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>

请注意,您必须通过样式设置默认值。 这样做的原因是触发器会覆盖样式,但是直接应用的属性会覆盖触发器。 在这种情况下,您希望触发器获胜。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM