WPF:最終的な高さが不明な場合のListViewの高さのアニメーション化
質問
ListViewがあり、XAMLで非常に簡単に定義されています
<ListView Name="myListVew" MaxHeight="200" Visibility="Collapsed">
<ListView.View>
<GridView>
<GridViewColumn Header="Line" Width="Auto" DisplayMemberBinding="{Binding Line}" />
<GridViewColumn Header="Error" Width="Auto" DisplayMemberBinding="{Binding Error}" />
</GridView>
</ListView.View>
</ListView>
ListViewを表示する場合、リストビューの高さを0からアニメーション化します。問題は、ListViewの最終的な高さがわからないことです。それ。とにかくこれはありますか?
解決
解決策を何時間も探して、フォーラムに質問を投稿し、10分後に自分で答えを見つけたら嫌いではないですか?
とにかく、私はそのようにレイアウトスケール変換を適用することで動作しました
<DoubleAnimationUsingKeyFrames BeginTime="00:00:00" Storyboard.TargetName="ErrorDisplay" Storyboard.TargetProperty="(FrameworkElement.LayoutTransform).(TransformGroup.Children)[0].(ScaleTransform.ScaleY)">
<SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>
<SplineDoubleKeyFrame KeyTime="00:00:00.3000000" Value="1"/>
</DoubleAnimationUsingKeyFrames>
他のヒント
これはまったく同じシナリオではありませんが、他の人に役立つ可能性があります。
高さがAutoの境界線があり、特定の高さにアニメーション化したかった。
私の境界線は次のようになりました:
<Border Name="ContainerBorder">
<!-- Stuff... -->
</Border>
このストーリーボードを作成しました:
<Storyboard x:Key="EditIn">
<DoubleAnimation Storyboard.TargetProperty="Height"
Storyboard.TargetName="ContainerBorder"
Name="BorderAnimation"
To="45"
Duration="0:0:0.8" />
</Storyboard>
アニメーションをトリガーしたボタンには、いくつかのコードビハインドがありました:
private void Edit_Click(object sender, RoutedEventArgs e) {
Storyboard sb = (Storyboard)FindResource("EditIn");
//Find the border animation
DoubleAnimation da = (DoubleAnimation)sb.Children.Where(t => t.Name == "BorderAnimation").FirstOrDefault();
if (da != null) { da.From = ContainerBorder.ActualHeight; }
sb.Begin(this);
}
だから、私は単に境界線を見つけて、「From」を設定しました; FrameworkElementのActualHeightへのアニメーションのプロパティ。
所属していません StackOverflow