首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从一个ListBox到另一个ListBox动画ListBoxItem

从一个ListBox到另一个ListBox的动画ListBoxItem,可以通过使用动画和数据绑定来实现。在这个例子中,我们将使用WPF(Windows Presentation Foundation)来创建一个简单的应用程序,其中包含两个ListBox,并在它们之间移动ListBoxItem时应用动画。

首先,我们需要在XAML中定义两个ListBox和一个Storyboard,用于定义动画。

代码语言:xaml<Window x:Class="WpfApp1.MainWindow"
复制
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="450" Width="800">
    <Grid>
        <Grid.ColumnDefinitions>
           <ColumnDefinition/>
           <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <ListBox x:Name="ListBox1" Margin="10" SelectionMode="Extended">
            <ListBox.Items>
                <ListBoxItem Content="Item 1"/>
                <ListBoxItem Content="Item 2"/>
                <ListBoxItem Content="Item 3"/>
            </ListBox.Items>
        </ListBox>
        <ListBox x:Name="ListBox2" Margin="10" Grid.Column="1" SelectionMode="Extended">
            <ListBox.Items>
                <ListBoxItem Content="Item 4"/>
                <ListBoxItem Content="Item 5"/>
                <ListBoxItem Content="Item 6"/>
            </ListBox.Items>
        </ListBox>
       <Storyboard x:Key="MoveItemAnimation">
           <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="movingItem">
                <SplineDoubleKeyFrame KeyTime="0" Value="0"/>
                <SplineDoubleKeyFrame KeyTime="0:0:1" Value="100"/>
            </DoubleAnimationUsingKeyFrames>
        </Storyboard>
    </Grid>
</Window>

接下来,我们需要在代码后置文件中添加一些逻辑,以便在选择ListBoxItem时启动动画。

代码语言:csharp
复制
using System.Windows;
using System.Windows.Media;

namespace WpfApp1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void ListBox_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
        {
            var selectedItems = (sender as ListBox).SelectedItems;
            if (selectedItems.Count > 0)
            {
                var movingItem = selectedItems[0] as ListBoxItem;
                var storyboard = FindResource("MoveItemAnimation") as Storyboard;
                var animation = storyboard.Children[0] as DoubleAnimationUsingKeyFrames;
                animation.Completed += (s, e2) =>
                {
                    ListBox2.Items.Add(movingItem);
                    ListBox1.Items.Remove(movingItem);
                };
                storyboard.Begin(movingItem);
            }
        }
    }
}

在这个例子中,我们使用了一个名为“MoveItemAnimation”的Storyboard来定义动画。动画使用DoubleAnimationUsingKeyFrames来更改ListBoxItem的X坐标,从而实现移动效果。在代码后置文件中,我们在ListBox的SelectionChanged事件中检查是否有选定的项目,并启动动画。动画完成后,我们将项目添加到目标ListBox中,并从源ListBox中删除它。

这个例子只是一个简单的动画,您可以根据需要进行自定义和扩展。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券