WPF ListBox 的 Template 绑定 Trigger 动画问题

2022-08-17 23:12:58 +08:00
 CrystalMoling

我有一个用了模板的 ListBox ,现在我需要在选中一个列表项的时候执行一个动画来显示详细信息

我现在使用的是 SelectionChanged 事件,但是当我更新列表内容的时候也会执行动画

有没有什么方法能够做到吗

大致结构:

<Grid>
    <Grid>
    	<ListBox>
        	<ListBox.Template>
            </ListBox.Template>
        </ListBox>
    </Grid>
    <Grid>
        <!-- 需要执行动画的 Grid -->
    </Grid>
</Grid>
1112 次点击
所在节点    C#
2 条回复
yanjinhua
2022-08-22 11:02:46 +08:00
方式 1:
XAML:

<Grid>
<ListBox SelectionChanged="ListBox_SelectionChanged">
<ListBoxItem>WPF</ListBoxItem>
<ListBoxItem>MAUI</ListBoxItem>
</ListBox>
<!-- 需要执行动画的 Grid -->

<Image x:Name="myImage" Source="fys.png"
Stretch="Uniform" Width="40" Height="40">
<Image.RenderTransform>
<ScaleTransform x:Name="myScaleTransform" ScaleX="0" ScaleY="0"/>
</Image.RenderTransform>
</Image>
</Grid>

cs: SelectionChanged 事件:
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{

var animation = new DoubleAnimation
{
From = 0,
To = 1.2,
Duration = TimeSpan.FromSeconds(1),//比如三秒
};
//也可将动画执行 RepeatBehavior="Forever",当耗时任务完成去做关闭;
myScaleTransform.BeginAnimation(ScaleTransform.ScaleXProperty, animation);
myScaleTransform.BeginAnimation(ScaleTransform.ScaleYProperty, animation);
}
也可以把图片做 Angle 旋转 loading
yanjinhua
2022-08-22 11:05:02 +08:00
方式二:
XAML 使用现成的

~~~xml
<Grid>
<ListBox SelectionChanged="ListBox_SelectionChanged">
<ListBoxItem>WPF</ListBoxItem>
<ListBoxItem>MAUI</ListBoxItem>
</ListBox>
<!-- 需要执行动画的 Grid -->
<wpfdev:RingLoading x:Name="myRingLoading" Width="160" Height="160" Visibility="Collapsed"
VerticalAlignment="Center" HorizontalAlignment="Center">
</wpfdev:RingLoading>

</Grid>
~~~

~~~C#
private void ListBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
myRingLoading.Visibility = Visibility.Visible;
myRingLoading.IsStart = true;

}
~~~

源码参考: https://www.cnblogs.com/yanjinhua/p/16571359.html
源码参考: https://www.v2ex.com/t/871883

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/873601

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX