WPF网格和togglebutton相互绑定

WPF grid and togglebutton mutual binding

我的应用程序中有一个网格,我需要该网格像弹出窗口一样工作,同时选中它应该出现的切换按钮,而取消选中它应该消失,为此我编写了这样的代码。

       <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.How 我可以处理它?

时,弹出窗口停留在那里,animation.It 工作正常

好的,朋友,您目前的方式没有多大意义。订阅 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 for wpf ChangePropertyAction

希望这对您有所帮助。