2011-01-14 4 views
0

私はSilverlightアプリケーションにアコーディオンを持っています。アコーディオンアイテムのヘッダーにテキストボックスとボタンを配置しています。ヘッダーは、アコーディオンアイテムを展開するためのクリックイベントをキャッチするため、ヘッダーのアイテムにそのイベントを伝播しないように見えます。ここでSilverlightのインタラクティブアイテムAccordion Header

は私のコードです:

<toolkit:Accordion Height="27" HorizontalAlignment="Left" Name="accordion1" VerticalAlignment="Top" Width="400"> 
     <toolkit:AccordionItem> 
      <toolkit:AccordionItem.Header> 
       <toolkit:WrapPanel> 
       <sdk:Label Content="Program" Width="42" FontSize="13" /> 
        <sdk:Label Content="Prog" Width="42" FontSize="13" /> 
        <sdk:Label Content="Start:" /> 
        <TextBox Width="45"></TextBox> 
        <sdk:Label Content="End:" /> 
        <TextBox Width="45"></TextBox> 
        <sdk:Label Content="Total:" /> 
        <sdk:Label Content="Total time: " Width="91" /> 
        <Button Click="delete_Click" Content="X" ></Button> 
       </toolkit:WrapPanel> 
       </toolkit:WrapPanel> 
      </toolkit:AccordionItem.Header> 
      <my:SetlistConfigurator /> 
     </toolkit:AccordionItem> 
    </toolkit:Accordion> 

誰もが、私は、ヘッダー内の子供たちへのClickイベントを伝播することができる方法の任意のアイデアがありますか?

答えて

1

デフォルトでは、AccordionItemは展開時にExpanderButtonを無効に設定します。これはLocked VisualStateにあります。そのVisualStateを削除すると、ヘッダー内のアイテムが選択されたときに実際にそのアイテムをクリックできることがわかります。

ここでは、変更する必要がある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> 
+0

このジョーをありがとう。私は私の問題が解決されるのをやめ、私はアコーデオンの内側とアコーデオンに向かって進んでいました。今では、埋め込まれたアコーディオンの動作が通常のアコーディオンと大きく異なる理由はわかりませんが、自動拡張されず、ヘッダー内のすべてがクリックできるようになりました。 – KenEucker