Frage

Ich habe 2 Spalten in einem Grid. Wenn ich auf eine Schaltfläche klicken, ich die erste Spalte wollen nach links animieren von ihm in der Tat so, auf 0 aktuelle Position ist, bricht es und ich bin links mit nur einer einzigen Spalte angezeigt wird.

War es hilfreich?

Lösung

Schauen Sie sich dieses Video-Training Link, von Todd Miranda , das zeigt, wie die Höhe einer Gittersteuerung animieren. Ich denke, man könnte es leicht für Ihren Fall zu arbeiten.

Andere Tipps

Sollte nicht zu hart sein. Sie müssten einen Eventtrigger erstellen, die eine Begin hat, die das Netz zielt auf und verwendet eine Double die Spaltenbreite zu verkleinern. Das Beispiel hier ein ähnliches Setup hat. die Eventtrigger würde auf die Schaltfläche gehen und die

Sie benötigen einen GridLengthAnimation Klasse (Code aus: http://windowsclient.net /learn/video.aspx?v=70654 )

public class GridLengthAnimation : AnimationTimeline
{
    public GridLengthAnimation()
    {
        // no-op
    }

    public GridLength From
    {
        get { return (GridLength)GetValue(FromProperty); }
        set { SetValue(FromProperty, value); }
    }

    public static readonly DependencyProperty FromProperty =
      DependencyProperty.Register("From", typeof(GridLength), typeof(GridLengthAnimation));

    public GridLength To
    {
        get { return (GridLength)GetValue(ToProperty); }
        set { SetValue(ToProperty, value); }
    }

    public static readonly DependencyProperty ToProperty =
        DependencyProperty.Register("To", typeof(GridLength), typeof(GridLengthAnimation));

    public override Type TargetPropertyType
    {
        get { return typeof(GridLength); }
    }

    protected override Freezable CreateInstanceCore()
    {
        return new GridLengthAnimation();
    }

    public override object GetCurrentValue(object defaultOriginValue, object defaultDestinationValue, AnimationClock animationClock)
    {
        double fromValue = this.From.Value;
        double toValue = this.To.Value;

        if (fromValue > toValue)
        {
            return new GridLength((1 - animationClock.CurrentProgress.Value) * (fromValue - toValue) + toValue, this.To.IsStar ? GridUnitType.Star : GridUnitType.Pixel);
        }
        else
        {
            return new GridLength((animationClock.CurrentProgress.Value) * (toValue - fromValue) + fromValue, this.To.IsStar ? GridUnitType.Star : GridUnitType.Pixel);
        }
    }
}

Und ein Storyboard für die RowDefinition / Column.

<Window.Resources>
    <Storyboard x:Key="ColumnAnimation">
        <Animations:GridLengthAnimation
            BeginTime="0:0:0"
            Duration="0:0:0.1"
            From="0*"
            Storyboard.TargetName="ColumnToAnimate"
            Storyboard.TargetProperty="Width"
            To="10*" />
    </Storyboard>

</Window.Resources>

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="10*" />
        <ColumnDefinition Width="Auto" />
        <ColumnDefinition x:Name="ColumnToAnimate" Width="0*" />
    </Grid.ColumnDefinitions>
</Grid>

Eine andere Sache, die Sie tun können, ist, den Inhalt animieren und die Gitter auf Inhalte, die es glatt autosize als Inhalt ändert Größe tun.

Sie können auch die Kontrolle Reveal verwenden aus Kevins Tasche-o-Tricks, http://j832.com/bagotricks /

Sie können auch erreichen dies hier ein Beispiel mit GridLength Animation finden Sie unter http : //marlongrech.wordpress.com/2007/08/20/gridlength-animation/ Mit diesem Ansatz können Sie beliebige Grid.Column oder Grid.Row Größe manipulieren.

Für Ihre speziellen Bedarf direkt mit der ersten Spalte mit Width = „Auto“ gesetzt und das zweite mit einem *, animieren die mit der Inhalt innerhalb des ersten Spalten-, die den Trick tun wird.

I Todd Mirandas C # Quellcode genommen und modifiziert es, zu zeigen, wie Datagrid-Spaltenbreiten schrumpfen & Erweiterung animieren.

Hier ist der Quellcode ...

http://www.pocketpctoolkit.com/WPF/DataGridColumnWidthAnimation.zip

Grundsätzlich klicken Sie auf einem CheckBox und je nachdem, was Datagrid-Spalten haben ihren „MinWidth“ Wert auf 0 gesetzt, auf Null-Breite geschrumpft werden. Klicken Sie auf die CheckBox wieder, werden die Spalten animieren zurück in ihre ursprüngliche Breite.

Der WPF-Code zeigt auch, wie Animationen / Storyboards in Code-behind erstellen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top