2013-08-25 3 views
0

У меня есть DataTemplate, который используется для заполнения longlistselector. В этом DataTemplate находятся 2 строки. Строка 1 содержит кнопку, при нажатии она должна сдвигать открытую строку 2. Проблема в том, что когда я запускаю приложение, я получаю UnhandledException.Windows Phone EventTrigger не работает

Вот DataTemplate:

<DataTemplate> 
    <Grid> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="Auto" /> 
      <RowDefinition Height="Auto" /> 
     </Grid.RowDefinitions>  

     <!-- 1st ROW --> 
     <Border Background="Red" HorizontalAlignment="Stretch">        
      <Grid>         
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
        <ColumnDefinition Width="Auto" /> 
       </Grid.ColumnDefinitions>        
       <TextBlock Text="Test Item" FontSize="42" /> 
       <Button Content="v" Grid.Column="1"> 
        <Button.Triggers>           
         <EventTrigger RoutedEvent="Button.Tap">            
          <BeginStoryboard>             
           <Storyboard x:Name="myBoard" TargetProperty="Border.Height" TargetName="Slider"> 
            <DoubleAnimation From="0" To="60" Duration="0:0:2" /> 
           </Storyboard>             
          </BeginStoryboard>            
         </EventTrigger> 
        </Button.Triggers> 
       </Button> 
      </Grid> 
     </Border> 

     <!-- 2nd ROW --> 
     <Border x:Name="Slider" Grid.Row="1" Background="Green" HorizontalAlignment="Stretch" Height="0"> 
      <TextBlock Text="Slider" FontSize="42" /> 
     </Border> 

    </Grid>  
</DataTemplate> 

/редактировать:

Когда я использую триггер на нагруженном событии сетки в это работает. Кажется, Silverlight поддерживает только событие Loaded для свойства RoutedEvent. Как описано здесь:

http://msdn.microsoft.com/en-us/library/system.windows.eventtrigger.routedevent(v=vs.95).aspx

Хотя с помощью Loaded событие кнопки не работает.

ответ

1

Я нашел решение:

<Button Content="v" Grid.Column="1"> 
    <i:Interaction.Triggers> 
     <i:EventTrigger EventName="Tap"> 
      <eim:ControlStoryboardAction ControlStoryboardOption="Play"> 
       <eim:ControlStoryboardAction.Storyboard> 
        <Storyboard TargetProperty="(Border.Height)" TargetName="Slider"> 
         <DoubleAnimation From="0" To="60" Duration="0:0:2" /> 
        </Storyboard> 
       </eim:ControlStoryboardAction.Storyboard> 
      </eim:ControlStoryboardAction> 
     </i:EventTrigger> 
    </i:Interaction.Triggers>          
</Button> 

Видимо, вы можете определить раскадровку внутри ControlStoryboardAction, что было именно то, что мне было нужно.

Смежные вопросы