在WPF中切换图像控制中的多个图像

时间:2013-09-20 14:18:24

标签: c# wpf image wpf-controls custom-controls

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

  1. 单一静态图像
  2. 装载机动画
  3. 带有多个图像动画的鼠标悬停效果
  4. 此控件将显示图像,但在鼠标悬停时,它将检查是否有多个图像或单个图像。因此将有两个鼠标悬停案例

    1. 单张图片=>没有任何反应。
    2. 多个图像=>它将开始动画源中的所有图像
    3. 我们可以使用触发器在鼠标悬停时更改图像,但是如果

      1. 如果是单张图片,我们没有鼠标悬停在图像上
      2. 如果有多张图片,我们会有多张图片。
      3. 我所取得的成就是非常基本的东西,我之前没有提到过。

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

        现在可能需要做的是添加dynanic源但我感到困惑的是我如何添加条件触发器并根据源提供不同的行为。

1 个答案:

答案 0 :(得分:0)

对于任何有兴趣的人,我通过创建BitmapImage列表并将所有图像添加到列表中来实现此目的。然后我重写OnMouseEnter和OnMouseLeave。

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

当OnMouseLeave事件发生时,我使用列表零索引处的图像重置图像源。这是主要形象。

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