1
感谢this stackoverflow question上的答案,我能够获得以下动画,以便当我的ViewModel属性的值设置为工具栏时淡入淡出。如何制作XAML动画使元素在消失后消失
的问题是:
- 工具栏不透明度淡出,但它占去了的空间仍然存在,它淡出
- 后的初始工具栏状态不同步与的价值视图模型属性
但我怎么处理下列条件的,在XAML本身,如果可能的话:
- 后工具栏(边框)淡出,然后我怎么说“那么只有然后可视性=折叠”,(可能两个动画同时发生或链接动画,所以visibile =折叠发生在第一个动画之后), 编辑:我自从加入低于该触发透明度= 0的伟大工程
- 工具栏变淡在,我怎么说之前的“公开程度=正常”
- 我怎么也重视这些事件不仅到视图加载过程,以便它们在页面第一次出现时显示正确的状态(淡入或淡出)?
这是到目前为止我的动画:
<Style x:Key="PageToolBarStyle" TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding PageToolBarVisible}" Value="true">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="0.0"
To="1.0"
Duration="0:0:2"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetProperty="Opacity"
From="1.0"
To="0.0"
Duration="0:0:2"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
</DataTrigger>
<Trigger Property="Opacity" Value="0">
<Setter Property="Visibility" Value="Collapsed"/>
</Trigger>
</Style.Triggers>
</Style>
<Window.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<EventTrigger.Actions>
...how can I tell it here to "do the trigger logic contained in "PageToolBarStyle"...
</EventTrigger.Actions>
</EventTrigger>
</Window.Triggers>
FraneworkElement.Loaded应该是Window.Triggers的一部分。至于不透明度触发器,我不知道为什么这不起作用。另一种方法是在完成的事件中添加一个方法来设置代码隐藏的可见性(但是我知道你想保留在XAML中) – 2009-07-07 13:14:04