WPF网格和togglebutton相互绑定

时间:2015-09-28 15:21:11

标签: c# wpf xaml togglebutton checked

我的应用程序中有一个网格,我需要该网格像弹出一样工作,同时检查它应该出现的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时,它工作正常。我可以处理它吗?

1 个答案:

答案 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。

希望这有帮助。