C# DataTrigger内的情节提要在RaisePropertyChanged事件上不会触发多次
我使用的是MVVM模型 我有一个依赖属性,一个布尔值,叫做“C# DataTrigger内的情节提要在RaisePropertyChanged事件上不会触发多次,c#,wpf,xaml,mvvm,properties,C#,Wpf,Xaml,Mvvm,Properties,我使用的是MVVM模型 我有一个依赖属性,一个布尔值,叫做“ResultOfUpdate”。每当用户尝试运行命令时,它都会更改 在这个依赖属性的setter中,我正在对属性名调用“RaisePropertyChanged()”方法 它绑定到一个DataTrigger,如下所示: <DataTrigger Binding="{Binding ResultOfUpdate}" Value="True"> <DataTrigger.EnterActions>
ResultOfUpdate
”。每当用户尝试运行命令时,它都会更改
在这个依赖属性的setter中,我正在对属性名调用“RaisePropertyChanged()
”方法
它绑定到一个DataTrigger
,如下所示:
<DataTrigger Binding="{Binding ResultOfUpdate}" Value="True">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(TextBlock.Opacity)"
AutoReverse="True">
<DiscreteDoubleKeyFrame KeyTime="0:0:0" Value="0"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.1" Value="0.1"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.2" Value="0.2"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.3" Value="0.3"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.4" Value="0.4"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.5" Value="0.5"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.6" Value="0.6"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.7" Value="0.7"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.8" Value="0.8"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.9" Value="0.9"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.1" Value="1"/>
<DiscreteDoubleKeyFrame KeyTime="0:0:0.3" Value="1"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
我希望每次将此bool
设置为true时,都会播放情节提要
令人困惑的是,在用户第一次运行命令时,该情节提要会被正确触发,从而将dependecy属性更新为true
随后的尝试发现,已输入依赖项属性设置程序代码,并调用了RaisePropertyChanged()方法,但情节提要不再播放
我在这里做错了什么 您可以使用如下事件触发器:
<StackPanel>
<TextBlock Text="I'm a text block" Name="theTextBlock"/>
<Button Name="BeginButton">Begin</Button>
<StackPanel.Triggers>
<EventTrigger RoutedEvent="Button.Click" SourceName="BeginButton">
<BeginStoryboard Name="MyBeginStoryboard">
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="theTextBlock"
Storyboard.TargetProperty="(TextBlock.Opacity)"
From="0.0" To="1.0" AutoReverse="True" Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</StackPanel.Triggers>
</StackPanel>
开始
更新了问题,因为之前关于构造函数的行为是因为我在构造函数中留下了一个方法!是否已将该值设置回false,以便对更改作出反应?否则,只是不断地将属性设置为“true”,我认为不会得到您想要的效果。不幸的是,我还希望在属性设置为false时让它做出反应。我曾考虑过使用enum来解决这个问题,但不值得这么做(看起来很难!)。有没有可能把它设为空或者类似的东西?我有两个问题。为什么需要依赖项属性上的RaisePropertyChanged()?为什么键时间“0:0:0.1”和“0:0:0.3”有两次不同的值?RaisePropertyChanged是通知视图值已更新。故事板是在Blend中生成的。
<StackPanel>
<TextBlock Text="I'm a text block" Name="theTextBlock"/>
<Button Name="BeginButton">Begin</Button>
<StackPanel.Triggers>
<EventTrigger RoutedEvent="Button.Click" SourceName="BeginButton">
<BeginStoryboard Name="MyBeginStoryboard">
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="theTextBlock"
Storyboard.TargetProperty="(TextBlock.Opacity)"
From="0.0" To="1.0" AutoReverse="True" Duration="0:0:1"/>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</StackPanel.Triggers>
</StackPanel>