天天看點

GridControl 實作Sorcll滾動條滾動虛清單加載資料

XMAL代碼

<Grid>

        <Grid.RowDefinitions>

            <RowDefinition/>

            <RowDefinition Height="Auto"/>

            <RowDefinition Height="Auto"/>

        </Grid.RowDefinitions>

        <dxg:GridControl x:Name="grid" AutoPopulateColumns="True" ScrollViewer.CanContentScroll="True">

            <dxg:GridControl.Columns>

                <dxg:GridColumn FieldName="Id"/>

                <dxg:GridColumn FieldName="Name"/>

                <dxg:GridColumn FieldName="Bool"/>

            </dxg:GridControl.Columns>

            <dxg:GridControl.View>

                <dxg:TableView Name="view" WheelScrollLines="1">

                </dxg:TableView>

            </dxg:GridControl.View>

        </dxg:GridControl>

    </Grid>

.cs代碼

 public partial class MainWindow : Window

    {

        public MainWindow()

        {

            InitializeComponent();

            grid.ItemsSource = new ObservableCollection<Person> {

                new Person { Id = 1, Name = "Name1", Bool = true },

                new Person { Id = 2, Name = "Name2", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

                new Person { Id = 3, Name = "Name3", Bool = true },

            };

            view.Loaded += new RoutedEventHandler(view_Loaded);

        }

        VisualTreeEnumerator en;

        ScrollViewer vs;

        void view_Loaded(object sender, RoutedEventArgs e)

        {

            en = new VisualTreeEnumerator(view);

            while (en.MoveNext())

            {

                ScrollViewer v = en.Current as ScrollViewer;

                if (v != null)

                {

                    vs = v;

                    v.ScrollChanged += new ScrollChangedEventHandler(v_ScrollChanged);

                }

            }

        }

        string aa = "";

        void v_ScrollChanged(object sender, ScrollChangedEventArgs e)

        {

            xxxx.Title = vs.ContentVerticalOffset.ToString();

        }

    }

    public class Person

    {

        public int Id { get; set; }

        public string Name { get; set; }

        public bool Bool { get; set; }

    }