从一个ListBox到另一个ListBox的动画ListBoxItem,可以通过使用动画和数据绑定来实现。在这个例子中,我们将使用WPF(Windows Presentation Foundation)来创建一个简单的应用程序,其中包含两个ListBox,并在它们之间移动ListBoxItem时应用动画。
首先,我们需要在XAML中定义两个ListBox和一个Storyboard,用于定义动画。
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时启动动画。
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中删除它。
这个例子只是一个简单的动画,您可以根据需要进行自定义和扩展。
领取专属 10元无门槛券
手把手带您无忧上云