亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何對新添加的項目進行動畫處理以在 wpf 的列表視圖中列出

如何對新添加的項目進行動畫處理以在 wpf 的列表視圖中列出

C#
LEATH 2023-09-24 11:07:04
我正在創建一個動態列表視圖lstDummies,其中包含一個虛擬 UserController dummyItem:dummyItem item;for (int i = 0; i < 100; i++){    item = new dummyItem ();    lstDummies.Items.Add(item);}這是虛擬項目 XAML :<UserControl x:Class="Kiosk.control.dummyItem"         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"          xmlns:d="http://schemas.microsoft.com/expression/blend/2008"          mc:Ignorable="d"          d:DesignHeight="300" d:DesignWidth="300"         x:Name="dummyItem"><Grid Background="BurlyWood">    <TextBox Text="hello world!" HorizontalAlignment="Center" VerticalAlignment="Center"></TextBox></Grid></UserControl>這是我的 XAML: <ListView Grid.Row="1" x:Name="lstDummies">        <ListView.Resources>            <Style TargetType="{x:Type ListViewItem}">                <Style.Triggers>                    <EventTrigger RoutedEvent="Loaded">                        <EventTrigger.Actions>                            <BeginStoryboard>                                <Storyboard>                                    <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.5">                                    </DoubleAnimation>                                </Storyboard>                            </BeginStoryboard>                        </EventTrigger.Actions>                    </EventTrigger>                </Style.Triggers>            </Style>        </ListView.Resources>        <ListView.ItemsPanel >            <ItemsPanelTemplate >                <UniformGrid VerticalAlignment="Top" HorizontalAlignment="Left" Columns="17"/>            </ItemsPanelTemplate>        </ListView.ItemsPanel> </ListView>現在,當新項目添加到 lstDummies 時,我想要淡入淡出效果。
查看完整描述

1 回答

?
一只萌萌小番薯

TA貢獻1795條經驗 獲得超7個贊

這對我來說效果很好,即Opacity設置為0然后在ListViewItem加載后進行動畫處理:


<ListView x:Name="lstDummies">

    <ListView.Resources>

        <Style TargetType="{x:Type ListViewItem}">

            <Setter Property="Opacity" Value="0" />

            <Style.Triggers>

                <EventTrigger RoutedEvent="Loaded">

                    <EventTrigger.Actions>

                        <BeginStoryboard>

                            <Storyboard>

                                <DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:2">

                                </DoubleAnimation>

                            </Storyboard>

                        </BeginStoryboard>

                    </EventTrigger.Actions>

                </EventTrigger>

            </Style.Triggers>

        </Style>

    </ListView.Resources>

    <ListView.ItemsPanel >

        <ItemsPanelTemplate >

            <UniformGrid VerticalAlignment="Top" HorizontalAlignment="Left" Columns="17"/>

        </ItemsPanelTemplate>

    </ListView.ItemsPanel>

    <ListView.ItemTemplate>

        <DataTemplate>

            <Rectangle Width="50" Height="50" Fill="Green" />

        </DataTemplate>

    </ListView.ItemTemplate>

</ListView>

如果您希望項目一項一項地淡入,您應該在調用之間引入延遲Add:


private async void Button_Click(object sender, RoutedEventArgs e)

{

    for (int i = 0; i < 100; i++)

    {

        lstDummies.Items.Add(new dummyItem());

        await Task.Delay(100);

    }

}


查看完整回答
反對 回復 2023-09-24
  • 1 回答
  • 0 關注
  • 131 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號