问题标签 [wpf-animation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1473 浏览

wpf - 在“FrameworkElement.Loaded”之后和“Unloaded”之前播放动画(在 ListBoxItem 中)

我有列表框:

列表框样式:

和 ListBoxItem 样式(这里是动画,抱歉长代码):

问题。添加元素(FrameworkElement.Loaded)时的动画并不总是播放。这种感觉是在创建项目时播放,但尚未显示。删除项目时的动画(FrameworkElement.Unloaded)不播放。那么,如何解决呢?

0 投票
1 回答
530 浏览

c# - 粘性 WPF 窗口

我正在尝试创建 Sticky WPF 窗口。

如果窗口更靠近左侧,则贴在左侧或右侧,如果靠近右侧,则在顶部

在我正在使用的代码下方,

上面的代码只移动一次窗口。

在 MSDN 上,如何:使用情节提要对其进行动画处理后设置属性

要再次运行动画,请将 BeginAnimation 属性设置为 NULL,

我尝试在动画之前将属性设置为 NULL。现在代码可以正常工作了。

现在代码看起来像

如果注意到,我将窗口放置在左侧和顶部的 -190 位置以隐藏它的某些部分。

但是使用下面的属性,它将窗口位置重置为0。我不希望它重置位置

有人可以建议如何在不重置现有位置的情况下制作多个动画吗?

  • Ashish Sapkale
0 投票
1 回答
127 浏览

wpf - ColorAnimation, Completed 事件不止一次起作用

我有代码:

和代码隐藏:

_keysAnimation_Completed我的目标:将颜色设置为黑色,然后设置动画,然后在事件中将颜色恢复为灰色。

事件处理程序中的问题_keysAnimation_Completed,它不想将颜色设置回DimGray,它只工作一次,在第二次以上颜色一直保持黑色,我该如何解决?

0 投票
0 回答
952 浏览

c# - 如何在 ListView/Box 中为添加和删除设置动画?

我正在尝试使用StoryBoards了解WPF中动画的工作原理。

到目前为止,我已经管理了以下内容:

  • 使用自定义项和资源绑定创建 ListView ;
  • 使用ItemContainerStyle以确保每个项目占据 ListView 的所有宽度;
  • 用于EventTrigger触发特定动画

我的问题很简单。

首先,我尝试使用Loaded触发器在项目添加到 ListView 的 bind 时为其设置动画ObservableCollection。它适用于opacity属性,但问题是每次滚动时都会触发此事件,这意味着 Windows 会在旅途中加载和卸载项目以节省内存(这是不稳定的,但使用更多的 CPU 和复杂的项目)。

所以这是不行的。此外,Unloaded触发器“不起作用”并在此处解决:https ://stackoverflow.com/a/14619637/3535408

因此,使用上述解决方案,我想手动触发动画。

更准确地说,每当我的项目的特定属性(很像Removing)发生更改时,我都希望StoryBoard开始。

如何为滑动动画完成此操作?因为我真的想让我的项目在我的 ListView 的 X 轴上滑动进出(从左侧进入,从左侧离开)。

这些滑动动画只有在项目被添加到绑定ObservableCollection和被移除时才必须触发。

以下 XAML 代码不起作用:

在 ListView > ListView.ItemTemplate > DataTemplate > DataTemplate.Triggers 内

不透明动画真的很好用。但是LayoutTransform会产生以下System.InvalidOperationExceptionCannot resolve all property references in the property path 'LayoutTransform.ScaleY'. Verify that applicable objects support the properties.

此外,我只是不知道如何在 X 轴上做滑动动画:/

这是我的 ListView 的内容ItemContainerStyle

谢谢您的帮助

0 投票
1 回答
1438 浏览

c# - 新动画开始时 WPF 停止和反转情节提要动画

我有 2 个 DataTrigger 可以为按钮的背景颜色设置动画(反向),这部分工作正常。

问题在于,当两个触发器在重叠时间内触发时,第一个触发的触发器不会反转颜色,当第二个触发器停止时,它会将颜色反转为前一个动画停止时的颜色。

我应该怎么办?

这是示例代码:

0 投票
2 回答
1818 浏览

wpf - 如何在 WPF 中停止动画

我有以下代码来启动它位于我的动画Resources

这是我的动画:

我想以编程方式停止它,我试过这个:

没有运气......知道为什么它没有停止吗?

0 投票
0 回答
295 浏览

wpf - 路径控制的情节提要动画不起作用

所以我有一个实现如下的 Path 对象:

使用此路径,我附加了以下完美运行的动画。

在职的:

但是,当我添加彩色动画时,两个动画都不起作用。此外,扩展似乎是瞬间发生的,而不是平滑扩展。Collapse 工作正常。

不工作:

它与颜色动画有关,因为当我尝试自己执行颜色动画时,它不起作用。这是 Telerik RadExpander 用户控件的一部分。

如果需要任何其他信息,请随时询问。

注意 1: 如果我将路径声明中的填充颜色设置为黑色并将折叠的填充颜色设置为绿色,箭头将开始为绿色,但一旦我展开它就会变成黑色并且不再改变颜色。

注意 2:当 coloranimation 设置时,doubleanimation 永远不会起作用。

0 投票
2 回答
17139 浏览

c# - 用于 UI 进程的 WPF 加载动画

在我的 WPF 应用程序中,我有一个关于应用程序信息和版本的关于框。当这个窗口被加载时,它需要一点时间,尤其是当它第一次被打开时。我正在尝试在窗口打开时实现加载动画,以便应用程序继续看起来响应。

我尝试使用 C# BackgroundWorker来实现这一点,但它不起作用,因为我尝试为其添加加载动画的过程(关于框打开)只能在 UI 线程上运行。我尝试创建一个新线程并将其放置在 STA 公寓中,但它不起作用。

这是我启动 about 框并控制加载动画的开始/停止的方法:

加载圆圈没有出现并开始移动,直到aboutBox.Show()被调用,我不明白这是为什么。如果我使用上面的代码运行我的应用程序,加载圆圈将在加载窗口之前短暂出现,但它不会旋转。

编辑:

似乎造成短暂延迟的只是窗口的创建,创建 AboutBox 的代码很简单:

这是 XAML:

0 投票
2 回答
1727 浏览

wpf - 按钮上的 WPF MouseUp EventTrigger 未设置 BorderBrush 和 BorderThickness

我有一个重置按钮 - 所需的行为是在鼠标悬停时增加大小,并且一旦单击,它周围就会有一个边框。

IsMouseOver 触发器工作,但我无法让 MouseUp 事件触发器工作(一旦按下按钮不显示边框)。

我尝试了以下方法:

1)在控件模板触发器中添加事件触发器

2) 向样式触发器添加事件触发器

3) 为按钮触发器添加事件触发器

我是否错误地编写了事件触发器?我已经为下面的三个尝试添加了代码 - 希望我只是错过了一些明显的东西并且是一个快速修复。谢谢!

1 - 将事件触发器添加到控制模板触发器

2 - 将事件触发器添加到样式触发器

3 - 向按钮触发器添加事件触发器

0 投票
1 回答
652 浏览

wpf - 切换按钮 IsMouseOver 动画

我想在 ToggleButton IsChecked=false 和 IsMouseOver 停用时添加淡出动画。

我有一个带有自定义控件模板的切换按钮。

以下触发器已设置好并且效果很好。

  • IsChecked=true 时显示背景不透明度=1
  • IsMouseOver=true 时显示背景不透明度=1

    /li>

但是,现在我想在未选中 ToggleButton 并且 IsMouseOver 停用时添加淡出动画。

我创建了一个故事板动画,它在 100 毫秒内将不透明度值从 1 更改为 0:

我试过的

我向 IsMouseOver 触发器添加了 EnterAction 和 ExitAction 并执行预期效果。但是,如果选中了 ToggleButton,我不希望动画运行。

我试过的第 2 部分

使用 MultiTrigger 并不能解决问题。