[英]How to animate child control by event in the parent control? - Reusable way
我里面有一個DockPanel和一個Button。 我想通過停靠面板中的事件(例如,鼠標懸停)為按鈕設置動畫(例如,淡入/淡出)。
編輯
好吧,我發現僅針對非模板/非樣式案例的解決方案(請參見下文)。 如何使其重用?
<DockPanel>
<Button>
Name="aaa"
</Button>
<DockPanel.Triggers>
<EventTrigger RoutedEvent="DockPanel.MouseEnter">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="0:0:0.100"
To="1"
Storyboard.TargetName="aaa"
Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<EventTrigger RoutedEvent="DockPanel.MouseLeave">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Duration="0:0:0.100"
To="0"
Storyboard.TargetName="aaa"
Storyboard.TargetProperty="Opacity"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</DockPanel.Triggers>
</DockPanel>
嗯,我唯一的想法是將要顯示的Controls
包裝在ContentControl
。 然后,您可能僅需要為ContentControl
創建模板。
編輯
ContentPresenter
=> ContentControl
EDIT2
根據TO的編輯:
如果您想采用事件方法,這是一種適當的方法,但恕我直言,不太優雅,則必須在視圖后面的代碼中實現這些方法。 例如
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中的每個Control
添加和刪除方法。
如果您不熟悉模板,則可能是更好的解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.