2016-03-28 7 views
1

Ich versuche, die Breite eines Gitters zu animieren, wenn eine Umschaltfläche aktiviert ist. Ich habe eine Datentrigger im Stil Elements Grid verwendet, dies zu tun, aber, wenn es ausgelöst wird, tritt ein Fehler, die besagt:DoubleAnimation-Ausnahme beim Animieren der Gitterbreite mit DataTrigger

Cannot animate the 'Width' property on a 'System.Windows.Controls.Grid' using a 'System.Windows.Media.Animation.DoubleAnimation'

Ich bin mir ziemlich sicher, dass es möglich ist, das Gitter in der Art und Weise zu animieren Ich versuche es, da ich es mit einem Klick-Event zum Laufen gebracht habe. Sieht jemand wo ich hier falsch liege?

<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.Triggers> 
        <DataTrigger Binding="{Binding Path=IsChecked, ElementName=CollapseIcon}" Value="True"> 

         <DataTrigger.EnterActions> 
          <BeginStoryboard > 
           <Storyboard > 
            <DoubleAnimation Duration="0:0:0.200" Storyboard.TargetProperty="Width" To="16" /> 
           </Storyboard> 
          </BeginStoryboard> 
         </DataTrigger.EnterActions> 
        </DataTrigger> 

       </Style.Triggers> 
      </Style> 

     </Grid.Resources> 

Antwort

1

Ich entschuldige mich einen Mann, ich habe vergessen, vollständig zu diesem Freitag zurück und dann wieder sah heute Ihre Frage. Wie auch immer, du bist so nah dran! Verschiebe deine Abhängigkeitseigenschaft für Breite auf das Objekt und du bist fertig! Das hat sich an meinem Ende gut bewährt. Prost!

<Window x:Class="MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="MainWindow" Height="350" Width="525"> 
    <Grid> 


      <Grid Margin="0" HorizontalAlignment="Left" Width="300" Background="Red" 
       TextOptions.TextFormattingMode="Display" x:Name="MainGrid" > 

       <Grid.Resources> 

        <Style TargetType="Grid"> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding Path=IsChecked, ElementName=CollapseIcon}" Value="True"> 

           <DataTrigger.EnterActions> 
            <BeginStoryboard > 
             <Storyboard > 
              <DoubleAnimation Duration="0:0:0.2" 
                  Storyboard.TargetProperty="Width" 
                  From="300" To="16" /> 
             </Storyboard> 
            </BeginStoryboard> 
           </DataTrigger.EnterActions> 
          </DataTrigger> 


         </Style.Triggers> 
        </Style> 

       </Grid.Resources> 

      </Grid> 


      <ToggleButton x:Name="CollapseIcon" Content="Magic!" Height="50" Width="50"/> 

     </Grid> 
    </Window> 

NACHTRAG: Vergessen in einem DoubleAnim müssen Sie sowohl mit To UND FROM oder aus standardmäßig in der gerade wieder NaN explizit sein. Prost!

+0

Keine Sorge, danke, dass du nochmal darauf geklickt hast. Leider habe ich versucht, die Breite zuvor auf das Objekt zu verschieben, obwohl ich es noch einmal versucht habe, indem ich den Code kopiert habe, um sicher zu sein, und ich bekomme immer noch den gleichen Fehler. Es muss etwas damit zu tun haben, was innerhalb des Gitters ist. Ich poste etwas mehr Code, falls das hilft. – fyodorfranz

+0

Ja ich würde wagen zu raten, dass es irgendwo einen anderen Schuldigen gibt, ich habe das gerade auf einem frischen wpf proj versucht und es hat gut funktioniert. –

+0

Das ist, was die [gesamte Kontrolle] (https://gist.github.com/jekrch/222108109f7c61c8aac) aussieht wie – fyodorfranz

Verwandte Themen