WPF 动画窗口可见性更改

2023-11-27

我正在尝试弄清楚如何为 WPF 窗口从 Visibile 到 Hidden 的更改设置动画。我目前让应用程序工作的方式是,窗口通常是隐藏的,当我将鼠标移动到屏幕一侧时,它会弹出,我正在使用布尔值到可见性转换器来执行此操作,但我想要做什么是让应用程序在鼠标悬停时更平滑地滑出,然后再滑回。

我没有对动画做过任何事情,所以我不知道该怎么做。首先,我不太确定应该使用什么动画来执行此操作,其次,我不太确定是否应该在视图模型中的“IsWindowVisibile”属性上触发此操作,或者是否应该将其绑定到 VisibilityChanged 事件,第三,我我不确定当窗口大小可变时这是否可能。

[Edit]

如果有必要,我会“采取”不透明解决方案,但这并不完全是我想要获得的“滑动”效果。


我做了类似的事情(不透明度在 2 秒内变为 0 并且窗口隐藏):只需看看代码,很简单

主窗口.xaml:

    <Storyboard x:Key="hideMe">
        <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:2" To="0.0"/>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0:0:2" Value="{x:Static Visibility.Hidden}"/>
        </ObjectAnimationUsingKeyFrames>
    </Storyboard>
    <Storyboard x:Key="showMe">
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Visibility">
            <DiscreteObjectKeyFrame KeyTime="0:0:0" Value="{x:Static Visibility.Visible}"/>
        </ObjectAnimationUsingKeyFrames>
        <DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:5" To="0.75"/>
    </Storyboard>

MainWindow.xaml.cs

    public void ShowMe() {
        (FindResource("showMe") as Storyboard).Begin(this);
    }
    public void HideMe() {
        (FindResource("hideMe") as Storyboard).Begin(this);
    }

只需致电HideMe() or ShowMe()而不是设置Visibility = Visibility.Hidden in code

Edit

WPF在移动窗口时速度很慢,因此如果需要滑动动画:

  1. 制作一个透明窗口(AllowsTransparency="True" Background="Transparent" WindowStyle="None")

  2. 将所有控件放在不透明面板上(Background="{StaticResource {x:Static SystemColors.ControlBrushKey}}")

  3. 为该面板设置动画Margin.Left from 0到窗户ActualWidth,然后隐藏一个窗口 - 这将消除保存窗口大小的问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 动画窗口可见性更改 的相关文章

  • WPF MVVM:如何禁用单击的按钮并启用所有其他按钮?

    我有一组按钮 只要单击其中一个按钮即可启用 而单击的按钮则被禁用
  • tabControl/tabitem 刷新困难

    我有一个带有 maintabWindow 和几个 tabitem 的 WPF 窗口 它通常工作正常 布局是这样的 但是当我之前添加以下窗口时 结果是这样的 所以问题与 tabControl tabItem 刷新有关 这是相当明显的 但更重要
  • 拖动用户控件,但将其保留在 WPF 中其父级的边界内

    我有一个用户控件 正在将其拖动到网格内 Z Index 设置得相当高 这样我就可以将其保持在其他孩子之上 拖动控件效果很好 但如果用户想要将控件移到网格之外 它会允许这样做 How do I keep it from leaving the
  • TargetType="controlType" 和 TargetType="{x:Type controlType}" 之间的区别

    在 WPF 中 您可以设置TargetType类型的名称 或者您可以将其设置为 x Type nameOfType 有谁知道有什么区别 没有什么 由于属性类型是Type XAML 解析器知道尝试将您提供的任何内容转换为Type 在其他情况下
  • 如何在MVVM中实现对话框架构

    我正在开发一个基于 PRISM 框架 Unity Container 的 WPF 4 0 MVVM 应用程序 我想知道在 mvvm 模式中实现对话框的最佳方法是什么 我计划在我的应用程序中使用相当多的东西 所以我想要一些可重用的东西 由于您
  • jQuery背景颜色动画

    我有一个带有链接和 SPAN 的 DIV 单击链接时 它会使用 AJAX 呈现项目列表 单击某个项目时 SPAN 的内容会发生更改 我想通过将 DIV 的背景颜色设置为绿色并使用 jQuery 将其动画回白色来突出显示此更改 var ori
  • 转换BitmapImage后内存未释放

    我遇到以下 C 测试 代码的问题 public static void TestBitmap2ByteArray BitmapImage bitmap JpegBitmapEncoder encoder new JpegBitmapEnco
  • WPF DataGrid 绑定 DataGridCell 内容

    希望这将是一个非常简单的答案 我认为我只是没有看到众所周知的树木 我有一个 DataGridCell 样式 我想将单元格的内容绑定到图像的源属性 这是我目前使用的 XAML
  • 将 WPF 快捷键绑定到 ViewModel 中的命令

    我有一个使用 MVVM 模式的 WPF 应用程序 将按钮连接到 VM 非常简单 因为它们实现了 ICommand 我有一个工作原理类似的上下文菜单 下一步是为上下文菜单创建快捷键 我不知道如何让快捷键调用命令 这是一个例子
  • 获取代码中的绑定结果

    我可能正在以错误的方式寻找这个 但是 有没有办法通过代码获取绑定的结果值 可能是一些显而易见的东西 但我就是找不到它 您只需致电ProvideValue的绑定方法 困难的部分是你需要通过有效的IServiceProvider到方法 编辑 实
  • 重写 WPF 工具包图表中的 DataPointStyle

    我想覆盖DataPointStyle of the LineSeries在我的 WPF 工具包中Chart
  • 网格内的 ContentPresenter 可见性绑定不起作用?

    我有以下网格
  • 列表视图上的 TextBlock:如何忽略 TextBlock 中的点击并让列表视图处理它们

    我有一个显示大量信息的列表视图 但是当它为空时 我想在其上覆盖一个文本块 上面写着 没有要显示的信息 或 bla bla bla 添加信息 列表视图设置为响应鼠标单击 但现在如果我单击文本块 这些事件将路由到文本块 我怎样才能让这些事件转到
  • 窗口关闭后仍在调用方法

    首先我不知道这是不是一个愚蠢的问题 我有这样的场景 首先我有一个主窗口 public MainWindow InitializeComponent dt is a System Windows Threading DispatcherTim
  • 从 xaml 获取 RowIndex

    我有一个带有 DataGridTemplateColumns 的 DataGrid 在 TemplateColumn 中 我使用工作正常的 DataTrigger 它从 DataGrid 父级检索项目计数
  • 将 PDF 嵌入到 WPF 应用程序中

    我正在尝试在 WPF 应用程序中嵌入 显示 PDF 到目前为止 我已经尝试过这些解决方案 但没有成功 在 a 中显示 PDFWindowsFormsHost主持一个AxAcroPdf控制 类似于显示的内容here http hugeonio
  • ListView ItemContainerStyle 模板

    我创建了用作 ListView 项目模板的样式 其中包含 CheckBox 和 TextBlock
  • 如何? WPF 窗口 - 最大化,不调整大小/移动

    我正在尝试创建一个已最大化打开的 WPF 窗口 无需调整大小 移动 在系统菜单中 也不在边框中 它应该一直最大化 除非用户最小化它 我尝试将 WindowState Maximized 和 ResizeMode CanMinimize 放在
  • 带动态元素的 WPF 启动屏幕。如何?

    我是 WPF 新手 我需要一些帮助 我有一个加载缓慢的 WPF 应用程序 因此我显示启动屏幕作为权宜之计 但是 我希望能够在每次运行时更改屏幕 并在文本区域中显示不同的引言 这是一个生产力应用程序 所以我将使用非愚蠢但激励性的引言 当然 如
  • WPF 绑定 CompositeCollection 中的 MenuItem 不起作用

    我在将命令绑定到复合集合中的菜单项时遇到问题 这MenuItem是其一部分ContextMenu这是定义在UserControl Resources 问题是新标签的绑定不起作用 当我将 MenuItem 放置在复合集合之外时 它将起作用 有

随机推荐

  • 导航视图项目按下时不会响应

    我正在开发一个带有侧导航抽屉的应用程序 抽屉打开得很好 但是据说可以 点击 的文本似乎没有响应 动画显示 当轻敲抽屉时会有反馈 您可以听到声音 但没有任何结果 我尝试放置 toast 消息以查看按钮是否注册了操作 但按下时没有出现 toas
  • JPanel 动作监听器

    我有一个 JPanel 其中有一堆不同的复选框和文本字段 我有一个已禁用的按钮 需要在设置特定配置时启用 我需要的是在整个 JPanel 上寻找事件的监听器 每当发生任何变化时 我相信我需要一个动作侦听器 但我找不到任何东西来桥接动作侦听器
  • “导入错误:没有名为 pwd 的模块”,但它存在

    我正在尝试在本地测试 gae boilerplate 但是当我尝试创建新帐户时 会出现以下错误 奇怪的是 如果我打开 python 解释器并输入 import pwd 它就会起作用 Internal Server Error The ser
  • Objective C 中的悬空指针 - nil 也会释放内存吗?

    我的理解是 当内存未被释放或 释放 时 就会发生内存泄漏 当指针未设置为 nil 并且对象被释放时 就会出现悬空指针 我的问题是 可以将对象设置为 nil 释放内存并清除指针引用吗 i e Car myCar Car alloc initW
  • 需要重构箭头反模式的想法

    我继承了一个怪物 它伪装成 NET 1 1 应用程序处理符合医疗保健索赔支付 ANSI 835 标准的文本文件 但它是一个怪物 正在处理的信息涉及医疗保健索赔 EOB 和报销 这些文件由在前几个位置具有标识符的记录和根据该类型记录的规范格式
  • Go结构体和字节数组之间的转换

    我正在用 Go 编写一个客户端 服务器应用程序 我想在 Go 中执行类似 C 的类型转换 例如 在围棋中 type packet struct opcode uint16 data 1024 byte var pkt1 packet n r
  • 如何在视图内切换视图?

    我正在使用 MVVM 轻型框架制作一个 WPF 应用程序 我想做的是在视图中有一个登录表单 当用户按下该视图中的按钮时 它会为附加的 ViewModel 启动 LoginCommand 从那里我要么想要启动一个包含应用程序其余部分的新窗口
  • 没有可用的 mysql-server 软件包

    我正在尝试在 Amazon Linux 实例上设置 MySQL 我已经尝试了所有方法 也使用 y 选项 sudo yum install mysql server sudo yum install mysql56 server sudo y
  • 从类中删除必需的属性,但 MVC3 仍然不会在文本框中没有值的情况下发布表单

    我有课 在某一时刻 我使用 System ComponentModel 将类的属性设置为 Required 好吧 然后我意识到这是没有必要的 我已经删除了所需的属性 但是当我尝试将表单提交到 ActionResult 时 表单不会发布 并且
  • C# - 通过进程名称的一部分来终止进程

    我正在寻找如何在 C 中执行此操作 如下所示 foreach Process proc in Process GetProcessesByName cheatengine x86 64 proc Kill 我正在使用这个语句 但是该程序有不
  • 销毁并重新创建一个对象是否会使指向该对象的所有指针无效?

    这是后续这个问题 假设我有这样的代码 class Class public virtual method this gt Class new this Class Class object new Class object gt metho
  • 检测 Android JNI 代码中的本机内存泄漏

    如何检测Android JNI代码中的内存泄漏 我正在使用弗罗约 2017年更新 valgrind 可用对于安卓 内置的 malloc 调试功能在以下版本中得到了显着扩展 安卓N 对于查找内存泄漏非常有用 您可能需要 exit 应用程序触发
  • iPhone 的动态图标更改

    我的问题也和其他人之前问过的一样 我发现一旦你设置了应用程序的图标 我们就无法更改应用程序图标动态地 是的 我同意了 如果是这样 我们使用动态图标苹果不接受 但我承认苹果有一些规则和规定 所以这是我的问题 如何动态更改应用程序图标 我不会将
  • AppleScript:获取对象或类的所有属性的列表

    为了存储对象的值以供外部 外部 AS 访问 我需要能够获取该对象的每个属性 然后我尝试将其强制为文本并将其存储在某个地方 如何获取对象拥有的属性列表 作为一个例子 我可以这样写 tell me get properties end tell
  • 定义每个子类定义一次的静态属性的最佳方法是什么?

    我编写了以下控制台应用程序来测试静态属性 using System namespace StaticPropertyTest public abstract class BaseClass public static int MyPrope
  • Android 上的 Eclipse 调试出了什么问题? [复制]

    这个问题在这里已经有答案了 可能的重复 Android 看似无用的调试环境 我显然已经被 Visual Studio 宠坏了 因为虽然我刚刚学习 Android 和 Eclipse 环境 但在 Eclipse 中调试应用程序正在严重损害进一
  • 是什么导致我的函数最后返回 None ? [复制]

    这个问题在这里已经有答案了 我非常简单的 python 函数正在返回None最后 我不太清楚为什么 我看了一些其他的帖子 还是没明白 这是我的代码 def printmult n i 1 while i lt 10 print n i en
  • CSS图灵完备了吗?

    据我所知 CSS 不是图灵完备 但我对 CSS 的了解非常有限 CSS图灵完备了吗 你可以编码Rule 110在 CSS3 中 所以只要您考虑适当的随附 HTML 文件 它就是图灵完备的和用户交互成为CSS 执行 的一部分 A相当好的实施可
  • Java Excel POI 在quartz 多次执行后停止

    我想对此有一些见解 我有一个从数据库读取和写入 Excel 文件的程序 它的执行基于使用 Quartz api 的计时器 并在每周的每个星期二触发 问题是 当我通过安排它每小时执行一次作业来测试它时 程序在写入 Excel 文件的过程中执行
  • WPF 动画窗口可见性更改

    我正在尝试弄清楚如何为 WPF 窗口从 Visibile 到 Hidden 的更改设置动画 我目前让应用程序工作的方式是 窗口通常是隐藏的 当我将鼠标移动到屏幕一侧时 它会弹出 我正在使用布尔值到可见性转换器来执行此操作 但我想要做什么是让