• wpf listbox实现选中动画


    效果如下:
    在这里插入图片描述
    参考:https://github.com/WPFDevelopersOrg/WPFDevelopers/blob/master/src/WPFDevelopers.Samples.Shared/Controls/NavigateMenu/NavigateMenu.xaml
    实现上述效果的前台代码:

    <Window
        x:Class="ListBox.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:local="clr-namespace:ListBox"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        Title="MainWindow"
        Width="800"
        Height="450"
        mc:Ignorable="d">
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition />
            </Grid.ColumnDefinitions>
            <ListBox x:Name="listbox">
                <ListBoxItem>1</ListBoxItem>
                <ListBoxItem>2</ListBoxItem>
                <ListBoxItem>3</ListBoxItem>
                <ListBoxItem>4</ListBoxItem>
                <ListBoxItem>5</ListBoxItem>
            </ListBox>
            <Rectangle
                x:Name="rect"
                Width="2"
                Height="20"
                HorizontalAlignment="Left"
                VerticalAlignment="Top"
                Fill="Red">
               
            </Rectangle>
        </Grid>
    </Window>
    
    

    后台代码:

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Data;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Media.Imaging;
    using System.Windows.Navigation;
    using System.Windows.Shapes;
    
    namespace ListBox
    {
        /// 
        /// MainWindow.xaml 的交互逻辑
        /// 
        public partial class MainWindow : Window
        {
            public MainWindow()
            {
                InitializeComponent();
                this.listbox.SelectionChanged += Listbox_SelectionChanged;
            }
    
            private double? lastX = null;
            private double? lastY = null;
            private void Listbox_SelectionChanged(object sender, SelectionChangedEventArgs e)
            {
                var itemTo = e.AddedItems[0] as ListBoxItem;
                var pointTo = itemTo.TranslatePoint(new Point(0, 0), this);
     
                var toMargin = new Thickness(pointTo.X, pointTo.Y, 0, 0);
                ThicknessAnimation ani = new ThicknessAnimation();
                ani.To = toMargin;
                ani.Duration = TimeSpan.FromSeconds(0.3);
                this.rect.BeginAnimation(Rectangle.MarginProperty, ani);
                ani.Completed += (ss, ee) =>
                {
                    this.rect.Margin = toMargin;
                };
            }
        }
    }
    
    

    同理,依据此,可以实现TabControlTabItem选中动画

  • 相关阅读:
    基于差值的图像超分辨率方法
    如何设计元宇宙展厅,元宇宙展厅的展示和交互形式有哪些?
    人工智能应用
    [笔记] FragmentVC(2021)
    南通港实现自动驾驶集卡+IGV多车型L4级编组作业运营,飞步科技车路云一体化应用全面落地
    详解如何使用Jenkins一键打包部署SpringBoot项目
    【强基计划】数学与物理竞赛中的微积分部分视频
    管理区解耦架构见过吗?能帮客户搞定大难题的
    A01、分布式文件系统
    单片机|自动宠物喂食器方案
  • 原文地址:https://blog.csdn.net/lishuangquan1987/article/details/139351222