Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在父控件中按事件设置子控件的动画?-可重复使用方式_C#_Wpf_Animation_Controls - Fatal编程技术网

C# 如何在父控件中按事件设置子控件的动画?-可重复使用方式

C# 如何在父控件中按事件设置子控件的动画?-可重复使用方式,c#,wpf,animation,controls,C#,Wpf,Animation,Controls,我有一个DockPanel和一个按钮在里面。我想在dock面板中按事件(例如,鼠标悬停)设置按钮的动画(例如,淡入/淡出) 编辑 好吧,我发现解决方案只适用于非模板/非样式的情况(见下文)。如何使其成为可重复使用的方式 Name=“aaa” Hmm,我唯一的想法就是将要在ContentControl中显示的控件包装起来。然后,您可能只需要为ContentControl创建一个模板 编辑 ContentPresenter=>ContentControl 编辑2 根据to的编辑: 如果您想采用一种

我有一个DockPanel和一个按钮在里面。我想在dock面板中按事件(例如,鼠标悬停)设置按钮的动画(例如,淡入/淡出)

编辑

好吧,我发现解决方案只适用于非模板/非样式的情况(见下文)。如何使其成为可重复使用的方式


Name=“aaa”

Hmm,我唯一的想法就是将要在
ContentControl
中显示的
控件包装起来。然后,您可能只需要为
ContentControl
创建一个模板

编辑

ContentPresenter
=>
ContentControl

编辑2

根据to的编辑:

如果您想采用一种处理事件的方法,这是一种适当但不太优雅的方法,那么您必须在视图的代码隐藏中实现这些方法。e、 g

private void OnMouseOver(object sender, MouseEventArgs e)
{
  var control = sender as Control; // perhaps you could cast to another base class
  if (control == null)
    return;
  // implement the behavior you like
  // ...
}
最大的问题,也是为什么不那么优雅的原因,您必须在每个
控件中添加和删除方法,这些控件在代码隐藏中添加到DockPanel


如果您不熟悉模板,它可能是更好的解决方案

我不认为这是有效的设计,因为如果你将这种风格应用于dockpanel中的所有控件,那么它将同时淡出和淡出,如果这是你想要的,那么你最好针对dockpanel@mhashim:好的,为什么会这样?很抱歉,没有任何有效的论据,讨论和改进我的建议是相当困难的。@mhashim:嗯,说得对。但是我看不到另一种可能性,因为我不能将
内容模板
(或类似的东西)应用于
DockPanel
@mhashim:我考虑过你的观点。我想,它会起作用的。由于每个添加的
控件
都将封装在自己的
ContentControl
实例中,我不明白为什么它们应该共享相同的动画。不幸的是,由于时间不够,我无法验证它。如果没有模板,只需在父控件中按事件设置子控件的动画?我修正了这个问题。