我的应用程序中有一个网格,我需要该网格像弹出一样工作,同时检查它应该出现的togglebutton,并且取消选中它应该消失,为此我写了这样的代码。
<Grid x:Name="popup" Visibility="{Binding IsChecked,ElementName=button,Converter={StaticResource BooleanToVisibility}}" >
<Grid.Resources><Storyboard x:Key="ResetButton1">
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(ToggleButton.IsChecked)"
Storyboard.TargetName="button">
<DiscreteObjectKeyFrame KeyTime="0">
<DiscreteObjectKeyFrame.Value>
<System:Boolean>False</System:Boolean>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard></Grid.Resources>
<i:Interaction.Triggers>
<i:EventTrigger EventName="TouchDown">
<ei:ControlStoryboardAction Storyboard="{StaticResource ResetButton1}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<TextBlock >this is a popup</TextBlock> </Grid>
<ToggleButton x:Name="button"></ToggleButton>
我检查后取消选中togglebutton时出现问题。弹出窗口停留在动画中。当我点击togglebutton时,它工作正常。我可以处理它吗?
答案 0 :(得分:0)
好的,所以你现在拥有它的方式并没有多大意义。订阅TouchDown
事件以触发仅取消选中ToggleButton
的故事板是一个否定自身的循环循环。
相反,只需抛出一对.Triggers就可以切换Grid的可见性并摆脱Storyboard和TouchDown EventTrigger。
所以只需在触发器中抛出这样的东西。
<DataTrigger Binding="{Binding IsChecked, ElementName=button}" Value="True">
<Setter Property="Visibility" Value="Visible"/>
</DataTrigger>
<DataTrigger Binding="{Binding IsChecked, ElementName=button}" Value="False">
<Setter Property="Visibility" Value="Collapsed"/>
</DataTrigger>
或者您也可以使用Blend SDK中的ChangePropertyAction
来获取wpf。
希望这有帮助。