0

我正在尝试在 WPF 中创建一个自定义图像控件,它将有 3 种状态

  1. 单个静态图像
  2. 加载器动画
  3. 和具有多图像动画的鼠标悬停效果

此控件将显示一个图像,但在鼠标悬停时它将检查它是否有多个图像或单个图像。所以会有两种鼠标悬停情况

  1. 单个图像 = > 没有任何反应。
  2. 多个图像=>它将开始通过源中的所有图像进行动画处理

我们可以使用触发器在鼠标悬停时更改图像,但是如果

  1. 如果是单个图像,我们没有鼠标悬停在图像上
  2. 如果有多个图像,我们有多个图像。

我所做的几乎是基本的东西,我以前没有放在这里。

<Style TargetType="{x:Type Image}">            
    <Setter Property="Source" Value="Resources\2.png" />
    <Style.Triggers>
        <Trigger Property="IsMouseOver" Value="True">
            <!-- Hover image -->
            <Setter Property="Cursor" Value="Hand"/>
            <Setter Property="Source" Value="Resources\3.png"/>
        </Trigger>
    </Style.Triggers>
</Style>

现在可能需要做的是添加动态源,但我很困惑的是如何添加条件触发器并根据源具有不同的行为。

4

1 回答 1

0

对于任何感兴趣的人,我通过创建 BitmapImage 列表并将所有图像添加到列表中来实现这一点。然后我覆盖 OnMouseEnter 和 OnMouseLeave。

OnMouseEnter 如果列表中有多个图像,我会启动一个计时器。在计时器过去后,我用列表中的下一个图像更新了图像源。

当 OnMouseLeave 事件发生时,我将图像源重置为列表的零索引处的图像。哪个是主图。

我使用 INotifyPropertyChanged 将图像源与属性绑定。

于 2013-09-24T00:29:12.610 回答