WPF实现图片动态滚动消失效果(方式一:使用FluidMoveBehavior)

使用FluidMoveBehavior来动态显示ListView元素位置的更改,这里实现的是图片横向动态滚动消失,效果如下:

实现步骤:

1、首先添加对Microsoft.Expression.Interactions.dll和system.windows.interactivity.dll的引用;

2、实现平滑滚动效果主要是在控件模板中加入以下代码:


               
                   
                       
                           
                       

                   

               

           

窗体xaml:


    
        
    
    
        
            
                
                    
                        
                        
                            
                        
                    
                
            
            
                
                    
                        
                    
                
            
        
    

3、交互逻辑

    /// 
    /// MainWindow.xaml 的交互逻辑
    /// 
    public partial class MainWindow : Window
    {
        private ObservableCollection bindItems = null;//绑定的资源元素集合
        private Timer UpdateScrollTimer = null;//消失状态计时器

        public MainWindow()
        {
            InitializeComponent();
            bindItems = new ObservableCollection();
        }

        /// 
        /// 窗体加载
        /// 
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            this.listPic.ItemsSource = bindItems;//数据绑定
            UpdateScrollTimer = new Timer(UpdateScrollTimerCallBack, null, 1000, Timeout.Infinite);
        }

        /// 
        /// 定时器回调
        /// 
        private void UpdateScrollTimerCallBack(object sender)
        {
            this.Dispatcher.Invoke(() =>
            {
                bindItems.Add(new ListBindData(AppDomain.CurrentDomain.BaseDirectory + @"example.jpg"));
                if (this.bindItems.Count > 4)
                    this.bindItems.RemoveAt(0);
            });
            if (UpdateScrollTimer != null)
                UpdateScrollTimer.Change(1000, Timeout.Infinite);
        }
    }

4、图片资源绑定类ListBindData.cs

    public class ListBindData : INotifyPropertyChanged
    {
        public ListBindData(string path)
        {
            itemPath = path;
        }

        private string itemPath;

        public string ItemPath
        {
            get
            {
                return itemPath;
            }
            set
            {
                if (itemPath != value)
                {
                    itemPath = value;
                    OnPropertyChanged("ItemPath");
                }
            }
        }

        private void OnPropertyChanged(string info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }
        public event PropertyChangedEventHandler PropertyChanged;
    }

注:最后共享一下Microsoft.Expression.Interactions.dll和system.windows.interactivity.dll,链接:https://pan.baidu.com/s/1VyGtZjYwlciNJgt4Oq6lyg    提取码:ml6v 

相关博客:

WPF实现图片动态滚动消失效果(方式一:使用FluidMoveBehavior)

WPF实现图片动态滚动消失效果(方式二:使用Storyboard)

你可能感兴趣的:(WPF应用实例)