Silverlight AccordionItem HeaderTemplate中的超链接

时间:2011-01-12 02:48:20

标签: c# xaml silverlight-4.0

我为手风琴创建了一个HeaderTemplate,我希望在标题的一侧显示一个文本块,在右侧显示一个超链接。显示工作正常,但是当用户点击时没有调用click事件,我猜b / c标题本身正在捕获点击以进行扩展/收缩。

    <layoutToolkit:Accordion>
        <layoutToolkit:AccordionItem IsSelected="True">
            <layoutToolkit:AccordionItem.HeaderTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal" Height="20">
                        <TextBlock Margin="0,0,700,0">Cancel Postcards</TextBlock>                                  
                          <HyperlinkButton Content="Next Call" Foreground="Blue" Click="NextCancel_Click" />
                      </StackPanel>
                  </DataTemplate>
            </layoutToolkit:AccordionItem.HeaderTemplate>
..... more code ....

有没有办法让超链接响应事件而无需实际创建新控件?

更新:看起来标题会在展开时将所有子控件设置为禁用,这就是链接无效的原因。折叠手风琴时它会起作用。那么,现在的问题是,如何防止超链接被禁用?

1 个答案:

答案 0 :(得分:2)

嘿查理,我刚刚碰巧回答了Epic720的同样问题。您必须更改Locked VisualState。

Interactive items in Silverlight Accordion Header

这是您应该更改的AccordionItem的LockedStates VisualStateGroup。如果你需要,我可以发布整个风格,虽然它很冗长。

<VisualStateGroup x:Name="LockedStates">
    <VisualStateGroup.Transitions>
        <VisualTransition GeneratedDuration="0"/>
    </VisualStateGroup.Transitions>
    <VisualState x:Name="Locked">
        <Storyboard>
            <!--
            <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="IsEnabled" Storyboard.TargetName="ExpanderButton">
                <DiscreteObjectKeyFrame KeyTime="0" Value="False"/>
            </ObjectAnimationUsingKeyFrames>
            -->
        </Storyboard>
    </VisualState>
    <VisualState x:Name="Unlocked">
        <Storyboard>
            <ObjectAnimationUsingKeyFrames Duration="0" Storyboard.TargetProperty="IsEnabled" Storyboard.TargetName="ExpanderButton">
                <DiscreteObjectKeyFrame KeyTime="0" Value="True"/>
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </VisualState>
</VisualStateGroup>