2016-03-25 16 views
0

Çocuk düğmelerinden biri işaretlendiğinde, ızgara genişliğini canlandırmaya çalışıyorum. Ancak, geçiş düğmesine bastığımda bir hata alıyorum, bir Tarzda bir Storyboard ağacının bir TargetName belirtemediğini belirterek. TargetName 'MainGrid' öğesini kaldırın. Yanlış nereye gidiyorumÜst animasyondaki İşlevi tetikle IsChecked.

<Grid Margin="0" HorizontalAlignment="Left" 
      TextOptions.TextFormattingMode="Display" x:Name="MainGrid"> 
     <Grid.Resources> 
      <Style TargetType="Grid"> 
       <Style.Setters> 
        <Setter Property="Width" Value="300"/> 
       </Style.Setters> 
      </Style> 

      <!--This is the animation--> 
      <Storyboard x:Key="CollapseGrid"> 
       <DoubleAnimation Duration="0:0:0.200" Storyboard.TargetName="MainGrid" Storyboard.TargetProperty="Width" To="16" /> 
      </Storyboard> 

      Visibility="{Binding ElementName=CollapseIcon, Path=IsChecked, Converter={StaticResource boolConverter}}"--> 
     </Grid.Resources> 
     <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="*" x:Name="FirstColumn" /> 
       <ColumnDefinition Width="Auto"/> 
       <ColumnDefinition Width="0" x:Name="LastColumn"/> 
      </Grid.ColumnDefinitions> 

      <DockPanel Margin="0,0,0,0" > 

       <Grid DockPanel.Dock="Top" Width="Auto" > 


        <Grid VerticalAlignment="Top" Height="25" Background="#B4BBC1"> 
         <TextBlock VerticalAlignment="Center" Foreground="Black" FontWeight="Bold" Padding="4" Margin="4,2,0,0" Text="HOME" HorizontalAlignment="Left" FontSize="10.667" /> 
        </Grid> 
        <Grid VerticalAlignment="Bottom" Height="25" Background="#00355A"> 

         <TextBlock VerticalAlignment="Center" Padding="4" Foreground="Gainsboro" Margin="209,1,30,1" Background="#00355A" Text="Change" HorizontalAlignment="Right" TextDecorations="Underline" Panel.ZIndex="1"/> 
         <TextBlock VerticalAlignment="Center" HorizontalAlignment="Left" Padding="4" Foreground="White" Margin="22,0,0,0" Text="{Binding DatabaseLabel}" Panel.ZIndex="2"/> 
        </Grid> 
        <Grid HorizontalAlignment="Right" Width="17" Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}" > 
         <ToggleButton Name="CollapseIcon" BorderThickness="0" Background="Transparent" VerticalAlignment="Center" Width="auto" Padding="4,0,0,0" Margin="0,19" FontFamily="Segoe UI Symbol" Content="&#9664;" HorizontalAlignment="Center" FontSize="9.333"> 

         <ToggleButton.Style> 
          <Style TargetType="ToggleButton"> 
            <Setter Property="Foreground" Value="{DynamicResource {x:Static SystemColors.ControlDarkBrushKey}}"/> 

            <Style.Triggers> 

            <!--Here's where I try to call the animation--> 
            <Trigger Property="IsChecked" Value="True"> 
             <Trigger.EnterActions> 
              <BeginStoryboard Storyboard="{StaticResource CollapseGrid}" /> 
             </Trigger.EnterActions> 
            </Trigger> 

            <Trigger Property="IsMouseOver" Value="True"> 
              <Setter Property="Foreground" Value="DimGray" /> 
             </Trigger> 
            </Style.Triggers> 

           </Style> 
          </ToggleButton.Style> 
         </ToggleButton> 
        </Grid> 
       </Grid> 

kimse görüyor mu:

İşte ben bugüne kadar var XAML var?

cevap

0

Bir stilin içinde bir UIElement'e başvuruda bulunamazsınız, bu nedenle aşağıdaki hatayı alıyorsunuz 'Stilde bir Storyboard ağacı bir TargetName belirtemez. TargetName 'MainGrid' öğesini kaldırın. Bunun yerine bir EventTrigger veya DataTrigger kullanmayı düşünebilirsiniz.

+0

Bir EventTrigger kullanmayı düşündüm, ancak bu animasyonu IsChecked özelliğine bağlamama izin vermez. – fyodorfranz

+0

Her iki öğeyi de benzer bir öğeye bağlamak için bir DataTrigger kullanabilirsiniz, bu şekilde bir UE öğesine bağlamanız gerekmez. – Bradley

+1

Eğer bir örneği yukarı kaldırmak istiyorsanız, tetikleyiciyi (ve 'BeginStoryboard'un bildirimini' MainGrid 'alt öğesi üzerinde 'DataChecked', 'IsChecked, ElementName = CollapseIcon' dizinine getirin ve' Storyboard.TargetName = 'etiketini kaldırın. MainGrid "Storyboard'dan" ve çözümünüzü alacaksınız. Bir saniyede koşmam gerek, bir araya gelmek için zaman yok. :) –

İlgili konular