当前位置:编程学习 > wap >>

(分享)listbox组件,滑动到列表底部时,会触发请求控件(附源码)



<ListBox ItemsSource="{Binding Items}"
         u:ScrollViewerMonitor.AtEndCommand="{Binding FetchMoreDataCommand}" />


 static void element_Loaded(object sender, RoutedEventArgs e)
    {
        FrameworkElement element = (FrameworkElement)sender;
        element.Loaded -= element_Loaded;
        ScrollViewer scrollViewer = FindChildOfType<ScrollViewer>(element);
        if (scrollViewer == null)
        {
            throw new InvalidOperationException("ScrollViewer not found.");
        }

        var listener = new DependencyPropertyListener();
        listener.Changed
            += delegate
            {
                bool atBottom = scrollViewer.VerticalOffset
                                    >= scrollViewer.ScrollableHeight;

                if (atBottom)
                {
                    var atEnd = GetAtEndCommand(element);
                    if (atEnd != null)
                    {
                        atEnd.Execute(null);
                    }                    
                }
            };
        Binding binding = new Binding("VerticalOffset") { Source = scrollViewer };
        listener.Attach(scrollViewer, binding);
    }






全部原文以及源代码下载:
 http://www.hugwp.com/thread-2225-1.html


建了一个wp开发的群,正在开发应用的同学加入讨论吧 Q群号 172765887

讨论wp7的相关应用,前景,框架,发布,疑难杂症等。
看好wp7并正在开发自己或商业应用的同学请加入吧。 --------------------编程问答-------------------- 谢谢分享。 --------------------编程问答-------------------- FindChildOfType经常找不到ListBox的ScrollViewer ,楼主知道是怎么回事吗 --------------------编程问答-------------------- 找不到是因为你找的时机不对,这时候listbox肯定是还没有内容所以就不存在ScrollViewer,你等listbox内容填充好了再找就能找到了
引用 2 楼  的回复:
FindChildOfType经常找不到ListBox的ScrollViewer ,楼主知道是怎么回事吗
--------------------编程问答-------------------- 这个方法,我试过,没太好使~~主要也是找不到scrollviewer  我这有另外一个方法,我这使用是完全没问题

    <Grid x:Name="LayoutRoot" Background="Transparent">
        <ListBox HorizontalAlignment="Left" Margin="0,6,0,0" Name="listBox1" VerticalAlignment="Top" Width="460" >
            <ListBox.Template>
                <ControlTemplate TargetType="ListBox">
                    <ScrollViewer BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}"  Foreground="{TemplateBinding Foreground}" Padding="{TemplateBinding Padding}" ManipulationCompleted="ListBox_ManipulationCompleted">
                        <Grid>
                            <ItemsPresenter/>
                        </Grid>
                    </ScrollViewer>
                </ControlTemplate>
            </ListBox.Template>

        </ListBox>
    </Grid>



        void ListBox_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
        {
            ScrollViewer bar = sender as ScrollViewer;

            if (bar != null)
            {
                // 如果是向下拖动并且已经在ListBox底端  
                if (e.TotalManipulation.Translation.Y < 0 && bar.VerticalOffset >= bar.ScrollableHeight)               
                {
                       ///想做的动作
                }
            }
        }
--------------------编程问答-------------------- 加精了!不错! --------------------编程问答-------------------- 刚发现wp上也是在用C#啊。 - -  --------------------编程问答--------------------

谢谢分享! --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 没开发过wp,不过怎么感觉和WPF的语法这么类似,包括常用类,绑定属性,UI的xaml语法。。
求释疑 --------------------编程问答--------------------
引用 14 楼  的回复:
没开发过wp,不过怎么感觉和WPF的语法这么类似,包括常用类,绑定属性,UI的xaml语法。。
求释疑


silverlight,windows phone,wpf,metro style 的UI都是用xaml来实现
当然了,包括依赖属性,路由事件,数据绑定,样式资源等特性都是通用的了。 --------------------编程问答-------------------- --------------------编程问答-------------------- 感谢分享!! --------------------编程问答--------------------
引用 15 楼  的回复:
引用 14 楼  的回复:
没开发过wp,不过怎么感觉和WPF的语法这么类似,包括常用类,绑定属性,UI的xaml语法。。
求释疑


silverlight,windows phone,wpf,metro style 的UI都是用xaml来实现
当然了,包括依赖属性,路由事件,数据绑定,样式资源等特性都是通用的了。
很好。 --------------------编程问答-------------------- --------------------编程问答-------------------- 支持!!! --------------------编程问答-------------------- 谢谢,学习了 --------------------编程问答-------------------- --------------------编程问答-------------------- 支持!!! --------------------编程问答-------------------- 看看是什么 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- WP7是否用C#开发的? --------------------编程问答-------------------- 从.net framework的所设计应用场景 String.Concat的重载方法,方法参数是(param object[]),你可以传入int,string,point,等值类型和引用类型,当你传入值类型变量,就会发生装箱的操作。再比如说方法调用声明一个Int类型的变量i,i调用父类方法GetType,因为i为值类型,想要调用父类方法就必须装箱,然后通过装箱后的对象来查找上级类型对象指针,查找方法表中所调用的方法,传入this实参,这也是装箱的应用场景

--------------------编程问答--------------------
补充:移动开发 ,  Windows Phone
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,