更新整理
This commit is contained in:
@@ -161,7 +161,7 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
{
|
||||
/* Sometimes when scrolling the scrollbar gets hidden without any reason. In this case the "IsMeasureValid"
|
||||
* property of the ScrollOwner is false. To prevent a infinite circle the mesasure call is ignored. */
|
||||
if(ScrollOwner != null)
|
||||
if (ScrollOwner != null)
|
||||
{
|
||||
var verticalScrollBarGotHidden =
|
||||
ScrollOwner.VerticalScrollBarVisibility == ScrollBarVisibility.Auto &&
|
||||
@@ -176,7 +176,7 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
_previousVerticalScrollBarVisibility = ScrollOwner.ComputedVerticalScrollBarVisibility;
|
||||
_previousHorizontalScrollBarVisibility = ScrollOwner.ComputedHorizontalScrollBarVisibility;
|
||||
|
||||
if(!ScrollOwner.IsMeasureValid && verticalScrollBarGotHidden || horizontalScrollBarGotHidden)
|
||||
if (!ScrollOwner.IsMeasureValid && verticalScrollBarGotHidden || horizontalScrollBarGotHidden)
|
||||
{
|
||||
return availableSize;
|
||||
}
|
||||
@@ -185,7 +185,7 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
Size extent;
|
||||
Size desiredSize;
|
||||
|
||||
if(ItemsOwner is IHierarchicalVirtualizationAndScrollInfo groupItem)
|
||||
if (ItemsOwner is IHierarchicalVirtualizationAndScrollInfo groupItem)
|
||||
{
|
||||
/* If the ItemsOwner is a group item the availableSize is ifinity.
|
||||
* Therfore the vieport size provided by the group item is used. */
|
||||
@@ -228,7 +228,7 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
/// <inheritdoc/>
|
||||
protected override void OnItemsChanged(object sender, ItemsChangedEventArgs args)
|
||||
{
|
||||
switch(args.Action)
|
||||
switch (args.Action)
|
||||
{
|
||||
case NotifyCollectionChangedAction.Remove:
|
||||
case NotifyCollectionChangedAction.Replace:
|
||||
@@ -250,14 +250,14 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
|
||||
using var at = ItemContainerGenerator.StartAt(startPosition, GeneratorDirection.Forward, true);
|
||||
|
||||
for(int i = ItemRange.StartIndex; i <= ItemRange.EndIndex; i++, childIndex++)
|
||||
for (int i = ItemRange.StartIndex; i <= ItemRange.EndIndex; i++, childIndex++)
|
||||
{
|
||||
var child = (UIElement)ItemContainerGenerator.GenerateNext(out var isNewlyRealized);
|
||||
|
||||
if(isNewlyRealized || !InternalChildren.Contains(child)/*recycled*/
|
||||
if (isNewlyRealized || !InternalChildren.Contains(child)/*recycled*/
|
||||
)
|
||||
{
|
||||
if(childIndex >= InternalChildren.Count)
|
||||
if (childIndex >= InternalChildren.Count)
|
||||
{
|
||||
AddInternalChild(child);
|
||||
}
|
||||
@@ -271,7 +271,7 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
child.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity));
|
||||
}
|
||||
|
||||
if(child is not IHierarchicalVirtualizationAndScrollInfo groupItem)
|
||||
if (child is not IHierarchicalVirtualizationAndScrollInfo groupItem)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
@@ -309,31 +309,31 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
{
|
||||
var invalidateScrollInfo = false;
|
||||
|
||||
if(extent != Extent)
|
||||
if (extent != Extent)
|
||||
{
|
||||
Extent = extent;
|
||||
invalidateScrollInfo = true;
|
||||
}
|
||||
|
||||
if(availableSize != Viewport)
|
||||
if (availableSize != Viewport)
|
||||
{
|
||||
Viewport = availableSize;
|
||||
invalidateScrollInfo = true;
|
||||
}
|
||||
|
||||
if(ViewportHeight != 0 && VerticalOffset != 0 && VerticalOffset + ViewportHeight + 1 >= ExtentHeight)
|
||||
if (ViewportHeight != 0 && VerticalOffset != 0 && VerticalOffset + ViewportHeight + 1 >= ExtentHeight)
|
||||
{
|
||||
Offset = new Point(Offset.X, extent.Height - availableSize.Height);
|
||||
invalidateScrollInfo = true;
|
||||
}
|
||||
|
||||
if(ViewportWidth != 0 && HorizontalOffset != 0 && HorizontalOffset + ViewportWidth + 1 >= ExtentWidth)
|
||||
if (ViewportWidth != 0 && HorizontalOffset != 0 && HorizontalOffset + ViewportWidth + 1 >= ExtentWidth)
|
||||
{
|
||||
Offset = new Point(extent.Width - availableSize.Width, Offset.Y);
|
||||
invalidateScrollInfo = true;
|
||||
}
|
||||
|
||||
if(invalidateScrollInfo)
|
||||
if (invalidateScrollInfo)
|
||||
{
|
||||
ScrollOwner?.InvalidateScrollInfo();
|
||||
}
|
||||
@@ -344,18 +344,18 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
/// </summary>
|
||||
protected virtual void VirtualizeItems()
|
||||
{
|
||||
for(var childIndex = InternalChildren.Count - 1; childIndex >= 0; childIndex--)
|
||||
for (var childIndex = InternalChildren.Count - 1; childIndex >= 0; childIndex--)
|
||||
{
|
||||
var generatorPosition = GetGeneratorPositionFromChildIndex(childIndex);
|
||||
|
||||
var itemIndex = ItemContainerGenerator.IndexFromGeneratorPosition(generatorPosition);
|
||||
|
||||
if(itemIndex == -1 || ItemRange.Contains(itemIndex))
|
||||
if (itemIndex == -1 || ItemRange.Contains(itemIndex))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
if(VirtualizationMode == VirtualizationMode.Recycling)
|
||||
if (VirtualizationMode == VirtualizationMode.Recycling)
|
||||
{
|
||||
ItemContainerGenerator.Recycle(generatorPosition, 1);
|
||||
}
|
||||
@@ -404,7 +404,7 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_itemContainerGenerator is not null)
|
||||
if (_itemContainerGenerator is not null)
|
||||
{
|
||||
return _itemContainerGenerator;
|
||||
}
|
||||
@@ -440,7 +440,7 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
{
|
||||
get
|
||||
{
|
||||
if(_itemsOwner is not null)
|
||||
if (_itemsOwner is not null)
|
||||
{
|
||||
return _itemsOwner;
|
||||
}
|
||||
@@ -509,22 +509,22 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
var scrollAmountX = 0d;
|
||||
var scrollAmountY = 0d;
|
||||
|
||||
if(pos.X < Offset.X)
|
||||
if (pos.X < Offset.X)
|
||||
{
|
||||
scrollAmountX = -(Offset.X - pos.X);
|
||||
}
|
||||
else if(pos.X + rectangle.Width > Offset.X + Viewport.Width)
|
||||
else if (pos.X + rectangle.Width > Offset.X + Viewport.Width)
|
||||
{
|
||||
var notVisibleX = pos.X + rectangle.Width - (Offset.X + Viewport.Width);
|
||||
var maxScrollX = pos.X - Offset.X; // keep left of the visual visible
|
||||
scrollAmountX = Math.Min(notVisibleX, maxScrollX);
|
||||
}
|
||||
|
||||
if(pos.Y < Offset.Y)
|
||||
if (pos.Y < Offset.Y)
|
||||
{
|
||||
scrollAmountY = -(Offset.Y - pos.Y);
|
||||
}
|
||||
else if(pos.Y + rectangle.Height > Offset.Y + Viewport.Height)
|
||||
else if (pos.Y + rectangle.Height > Offset.Y + Viewport.Height)
|
||||
{
|
||||
var notVisibleY = pos.Y + rectangle.Height - (Offset.Y + Viewport.Height);
|
||||
var maxScrollY = pos.Y - Offset.Y; // keep top of the visual visible
|
||||
@@ -543,7 +543,7 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
/// <inheritdoc/>
|
||||
public void MouseWheelDown()
|
||||
{
|
||||
if(MouseWheelScrollDirection == ScrollDirection.Vertical)
|
||||
if (MouseWheelScrollDirection == ScrollDirection.Vertical)
|
||||
{
|
||||
ScrollVertical(ScrollUnit == ScrollUnit.Pixel ? MouseWheelDelta : GetMouseWheelDownScrollAmount());
|
||||
}
|
||||
@@ -564,7 +564,7 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
/// <inheritdoc/>
|
||||
public void MouseWheelUp()
|
||||
{
|
||||
if(MouseWheelScrollDirection == ScrollDirection.Vertical)
|
||||
if (MouseWheelScrollDirection == ScrollDirection.Vertical)
|
||||
{
|
||||
ScrollVertical(ScrollUnit == ScrollUnit.Pixel ? -MouseWheelDelta : GetMouseWheelUpScrollAmount());
|
||||
}
|
||||
@@ -594,11 +594,11 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
/// </summary>
|
||||
public void SetHorizontalOffset(double offset)
|
||||
{
|
||||
if(offset < 0 || Viewport.Width >= Extent.Width)
|
||||
if (offset < 0 || Viewport.Width >= Extent.Width)
|
||||
{
|
||||
offset = 0;
|
||||
}
|
||||
else if(offset + Viewport.Width >= Extent.Width)
|
||||
else if (offset + Viewport.Width >= Extent.Width)
|
||||
{
|
||||
offset = Extent.Width - Viewport.Width;
|
||||
}
|
||||
@@ -613,11 +613,11 @@ public abstract class VirtualizingPanelBase : VirtualizingPanel, IScrollInfo
|
||||
/// </summary>
|
||||
public void SetVerticalOffset(double offset)
|
||||
{
|
||||
if(offset < 0 || Viewport.Height >= Extent.Height)
|
||||
if (offset < 0 || Viewport.Height >= Extent.Height)
|
||||
{
|
||||
offset = 0;
|
||||
}
|
||||
else if(offset + Viewport.Height >= Extent.Height)
|
||||
else if (offset + Viewport.Height >= Extent.Height)
|
||||
{
|
||||
offset = Extent.Height - Viewport.Height;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user