ToggleButton没有未选中

时间:2014-02-14 10:37:32

标签: wpf xaml animation storyboard togglebutton

我最近刚做了ToggleButton的研究,他们的工作就像RadioButtons,这正是我所需要的。

我的按钮上有Storyboard动画,当我点击它们时,它们显示为箭头,表明这是你的页面:

enter image description here

但是当你选择它们时,你可以看到其他人都被检查了。

这是我目前的代码(对于其中一个按钮,另一个是相同的):

<ToggleButton x:Name="btnToDo" Content="Button" HorizontalAlignment="Left" VerticalAlignment="Top" Width="222" Click="Button_Click" Height="29" Margin="0,132,0,0">
            <ToggleButton.Template>
                <ControlTemplate TargetType="{x:Type ToggleButton}" >
                    <Grid>
                        <Image x:Name="Normal" Source="Images/Normal1.png" Width="281" HorizontalAlignment="Left"/>
                        <Image x:Name="Hover" Source="Images/Hover1.png" Opacity="0" Width="281" HorizontalAlignment="Left"/>
                        <Image x:Name="Pressed" Source="Images/ben.png" Stretch="Fill" Opacity="0"/>
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsChecked" Value="True">
                            <Trigger.EnterActions>
                            <BeginStoryboard x:Name="ButtonCheckedStoryboardBegin"
                                             Storyboard="{StaticResource MouseDownTimeLine}"/>
                        </Trigger.EnterActions>
                        <Trigger.ExitActions>
                            <BeginStoryboard x:Name="ButtonUncheckedStoryboardEnd" 
                                             Storyboard="{StaticResource MouseUpTimeLine}"/>
                        </Trigger.ExitActions>
                    </Trigger>
                        <Trigger Property="IsChecked" Value="False">
                            <Trigger.EnterActions>
                            <BeginStoryboard Storyboard="{StaticResource MouseUpTimeLine}"/>
                            </Trigger.EnterActions>
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </ToggleButton.Template>
        </ToggleButton>

我的MouseUpTimeLineMouseDownTimeLineMouseExitTimeLine就是:

    <Storyboard x:Key="MouseDownTimeLine" >
        <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Pressed" Storyboard.TargetProperty="Opacity" >
            <SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="1" />
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>

    <Storyboard x:Key="MouseUpTimeLine">
        <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Pressed" Storyboard.TargetProperty="Opacity" >
            <SplineDoubleKeyFrame KeyTime="00:00:00.25" Value="1"/>
        </DoubleAnimationUsingKeyFrames>

    <Storyboard x:Key="MouseExitTimeLine">
        <DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="Normal" Storyboard.TargetProperty="Opacity" >
            <SplineDoubleKeyFrame KeyTime="00:00:00.00" Value="1"/>
        </DoubleAnimationUsingKeyFrames>

所以我希望状态在IsChecked为假时恢复正常,这应该是另一个按钮IsChecked

1 个答案:

答案 0 :(得分:1)

不用担心,在某些时候,每个人都必然会有新的东西。无论如何,就像我在评论中说的那样。 ToggleButton没有默认情况下您正在寻找的功能。切换到RadioButton并将其设计为看起来像您的按钮会让生活更轻松,以提供您所追求的行为。

您可以在MSN docs中找到信息和默认模板,并使用Blend使编辑模板变得相当简单,对于您的实例,您只需在设计器上放置RadioButton,右键单击它,然后选择&#34;编辑模板 - &gt;编辑副本&#34;将控件模板的副本添加到视图中以编辑您的内容。

希望这会有所帮助,如果你遇到任何问题,我们会让你排序。干杯