Example #1
0
        //protected override void ClearContainerForItemOverride(DependencyObject element, object item)
        //{
        //    if (!PlatformIndependent.IsWindowsPhoneDevice && ItemsSource != null && ItemsSource is IResizeableItems)
        //    {
        //        var gridview = (element as ListViewItem).ContentTemplateRoot as VariableSizedGridView;
        //        gridview.ItemClick -= Gridview_ItemClick;
        //        //variableSizedGridViews.Remove(gridview);
        //    }

        //    base.ClearContainerForItemOverride(element, item);
        //}

        private void GridviewItem_Loaded(object sender, RoutedEventArgs e)
        {
            var gridview = (sender as ListViewItem).ContentTemplateRoot as VariableSizedGridView;

            var resizeableItem = ResizeableItems.GetItem(this.ActualWidth);

            if (resizeableItem != null)
            {
                resizeableItem.ItemWidth = (int)(this.ActualWidth / resizeableItem.Columns - 7);
                gridview.ResizeableItem  = resizeableItem;
            }
            gridview.ItemClick -= Gridview_ItemClick;
            gridview.ItemClick += Gridview_ItemClick;
            //gridview.ItemTemplate = VirtualizedVariableSizedGridViewItemTemplate;
            Binding binding = new Binding();

            binding.Source = this;
            binding.Mode   = BindingMode.OneWay;
            binding.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
            binding.Path = new PropertyPath("VirtualizedVariableSizedGridViewItemTemplate");
            gridview.SetBinding(GridView.ItemTemplateProperty, binding);

            Binding binding1 = new Binding();

            binding1.Source = this;
            binding1.Mode   = BindingMode.OneWay;
            binding1.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
            binding1.Path = new PropertyPath("VirtualizedVariableSizedInternalGridViewContainerStyle");
            gridview.SetBinding(GridView.ItemContainerStyleProperty, binding1);
            (sender as ListViewItem).Loaded -= GridviewItem_Loaded;
        }
Example #2
0
        protected override void PrepareContainerForItemOverride(DependencyObject element, object item)
        {
            base.PrepareContainerForItemOverride(element, item);
            if (!PlatformIndependent.IsWindowsPhoneDevice && ItemsSource != null && ItemsSource is IResizeableItems)
            {
                base.ItemClick -= VirtualizedVariableSizedGridView_ItemClick;
                var gridviewItem = element as ListViewItem;
                if (VirtualizedVariableSizedGridViewItemContainerStyle != null)
                {
                    gridviewItem.Style = VirtualizedVariableSizedGridViewItemContainerStyle;
                }
                //Container Recycling, so ContentTemplateRoot maybe not null.
                if (gridviewItem.ContentTemplateRoot != null)
                {
                    var gridview = gridviewItem.ContentTemplateRoot as VariableSizedGridView;
                    //variableSizedGridViews.Add(gridview);
                    var resizeableItem = ResizeableItems.GetItem(this.ActualWidth);
                    if (resizeableItem != null)
                    {
                        resizeableItem.ItemWidth = (int)(this.ActualWidth / resizeableItem.Columns - 7);
                        gridview.ResizeableItem  = resizeableItem;
                        gridview.ItemClick      -= Gridview_ItemClick;
                        gridview.ItemClick      += Gridview_ItemClick;
                    }

                    if (gridview.ItemContainerStyle == null)
                    {
                        Binding binding1 = new Binding();
                        binding1.Source = this;
                        binding1.Mode   = BindingMode.OneWay;
                        binding1.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
                        binding1.Path = new PropertyPath("VirtualizedVariableSizedInternalGridViewContainerStyle");
                        gridview.SetBinding(GridView.ItemContainerStyleProperty, binding1);
                    }
                }
                else
                {
                    gridviewItem.Loaded -= GridviewItem_Loaded;
                    gridviewItem.Loaded += GridviewItem_Loaded;
                }
            }
        }
Example #3
0
        private void OnMeasureOverride(Size availableSize)
        {
            if (ItemsSource != null && ItemsSource is IResizeableItems && availableSize != Size.Empty)
            {
                var resizeableItem = ResizeableItems.GetItem(availableSize.Width);

                if (resizeableItem != null)
                {
                    resizeableItem.ItemWidth = (int)(availableSize.Width / resizeableItem.Columns - 7);

                    foreach (var item in this.Items)
                    {
                        var gridviewItem = this.ContainerFromItem(item) as ListViewItem;
                        //not null, it's in viewport, so it need to update.
                        if (gridviewItem != null && gridviewItem.ContentTemplateRoot != null)
                        {
                            var gridview = gridviewItem.ContentTemplateRoot as VariableSizedGridView;
                            gridview.ResizeableItem = null;
                            gridview.ResizeableItem = resizeableItem;
                        }
                    }
                }
            }
        }