2011-01-14 12 views
0

Ich habe ein Akkordeon in meiner Silverlight-Anwendung, und ich setze Textfelder und Buttons in die Kopfzeile der Akkordeon-Objekte. Es scheint so, als ob der Header das click -Ereignis zum Erweitern des Akkordeon-Elements abfängt, und dieses Ereignis nicht auch auf die Elemente im Header propagiert.Interaktive Elemente in Silverlight Accordion Header

Hier ist mein Code:

<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> 

Wer irgendwelche Ideen haben, wie ich das Click-Ereignis für die Kinder im Kopf ausbreiten kann?

Antwort

1

Standardmäßig aktiviert ein AccordionItem seinen ExpanderButton, wenn er erweitert wird. Dies ist im gesperrten VisualState. Wenn Sie diesen VisualState entfernen, sehen Sie, dass Sie tatsächlich auf Elemente in der Kopfzeile klicken können, wenn diese ausgewählt ist.

Hier ist die LockedStates VisualStateGroup des AccordionItem, die Sie ändern sollten. Ich kann den ganzen Stil veröffentlichen, wenn Sie es brauchen, obwohl es ziemlich ausführlich ist.

<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

Vielen Dank für diesen Joe. Ich endete damit, dass mein Problem gelöst wurde, ich arbeitete mich zu einem Akkordeon drinnen und Akkordeon hin. Jetzt weiß ich nicht, warum das Verhalten eines eingebetteten Akkordeons so anders ist als bei einem normalen Akkordeon, aber es wird nicht automatisch erweitert und alles im Header ist nun anklickbar. – KenEucker