如何解决EventTrigger 和 DataTrigger 不能一起工作
我有一组要显示在 ItemsControl
中的项目。
当一个项目是新的时,它应该淡入,当它的 StateType
属性更改为“完成”时,它应该淡出。
我的ItemTemplate
的{{1}}是ItemsControl
DockPanel
问题是:它淡入但永不淡出。如果我将 <DockPanel.Style>
<Style TargetType="{x:Type DockPanel}">
<Style.Triggers>
<!-- Fades in as expected but DataTrigger below never fades out -->
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="0" To="1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
<!-- Using this for fading in everything works fine (first StateType of a new item is Running) -->
<!--
<DataTrigger Binding="{Binding StateType}" Value="{x:Static local:AppStateItem+Type.Running}">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="0" To="1"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
-->
<!-- fade out trigger -->
<DataTrigger Binding="{Binding StateType}" Value="{x:Static local:AppStateItem+Type.Finished}">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="1" To="0" BeginTime="0:0:4"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</DockPanel.Style>
替换为带注释的 EventTrigger
以使其淡入淡出,它会按预期工作。 DataTrigger
是否覆盖了某些东西,即使它应该只触发一次?
解决方法
您的示例在使用两个 #include<bits/stdc++.h>
using namespace std;
int main()
{
unordered_map<int,string>mp;
mp[1]="Sunday";
mp[2]="Mon";
mp[3]="Tue";
mp[4]="Wed";
mp[5]="Thu";
mp[6]="Fri";
mp[7]="Sat";
int n;
cin>>n;
cout<<mp[n%7]<<endl;
}
时效果很好。
确保实现 DataTriggers
并引发 INotifyPropertyChanged
属性的 PropertyChanged
事件。
您可能还想从第二个 StateType
中删除 BeginTime
设置。
试试这个最小的可重复样本:
MainWindow.xaml:
Storyboard
MainWindow.xaml.cs:
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<DockPanel>
<DockPanel.Style>
<Style TargetType="{x:Type DockPanel}">
<Style.Triggers>
<DataTrigger Binding="{Binding StateType}" Value="{x:Static local:AppStateItem.Running}">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard >
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="0" To="1"/>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<!-- fade out trigger -->
<DataTrigger Binding="{Binding StateType}" Value="{x:Static local:AppStateItem.Finished}">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" Duration="0:0:1" From="1" To="0" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
</Style.Triggers>
</Style>
</DockPanel.Style>
<Button Content="Fade out" Click="Button_Click" DockPanel.Dock="Bottom" />
<TextBlock FontSize="14" FontWeight="Bold" Text="test" />
</DockPanel>
</Window>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。