Fix some rendering issues in calendar with all day events.
This commit is contained in:
@@ -53,7 +53,7 @@
|
|||||||
<Grid x:Name="TimedRoot" Visibility="Collapsed">
|
<Grid x:Name="TimedRoot" Visibility="Collapsed">
|
||||||
<Grid.RowDefinitions>
|
<Grid.RowDefinitions>
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="Auto" />
|
||||||
<RowDefinition Height="Auto" />
|
<RowDefinition Height="{x:Bind helpers:XamlHelpers.DoubleToGridLength(TimedAllDayHeight), Mode=OneWay}" />
|
||||||
<RowDefinition Height="*" />
|
<RowDefinition Height="*" />
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
|
|||||||
@@ -349,12 +349,14 @@ public sealed partial class CalendarPeriodControl : UserControl, INotifyProperty
|
|||||||
TimedDayWidth)));
|
TimedDayWidth)));
|
||||||
|
|
||||||
var eventTemplate = (DataTemplate)Resources["CalendarEventTemplate"];
|
var eventTemplate = (DataTemplate)Resources["CalendarEventTemplate"];
|
||||||
|
|
||||||
ReplaceCollection(TimedAllDayItemsCollection, TimedCalendarLayoutCalculator.CalculateAllDayItems(_currentRange, CurrentItems, timedSurfaceWidth).Select(item =>
|
ReplaceCollection(TimedAllDayItemsCollection, TimedCalendarLayoutCalculator.CalculateAllDayItems(_currentRange, CurrentItems, timedSurfaceWidth).Select(item =>
|
||||||
{
|
{
|
||||||
PrepareDisplayMetadata(item.Item, item.Date);
|
PrepareDisplayMetadata(item.Item, item.Date);
|
||||||
item.Template = eventTemplate;
|
item.Template = eventTemplate;
|
||||||
return item;
|
return item;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
ReplaceCollection(TimedItemsCollection, _timedLayout.Items.Select(item =>
|
ReplaceCollection(TimedItemsCollection, _timedLayout.Items.Select(item =>
|
||||||
{
|
{
|
||||||
PrepareDisplayMetadata(item.Item, item.Date);
|
PrepareDisplayMetadata(item.Item, item.Date);
|
||||||
@@ -365,9 +367,11 @@ public sealed partial class CalendarPeriodControl : UserControl, INotifyProperty
|
|||||||
RenderTimedAllDayItems();
|
RenderTimedAllDayItems();
|
||||||
RenderTimedItems();
|
RenderTimedItems();
|
||||||
|
|
||||||
TimedAllDayCanvas.Invalidate();
|
|
||||||
TimedHeaderCanvas.Invalidate();
|
TimedHeaderCanvas.Invalidate();
|
||||||
TimedStructureCanvas.Invalidate();
|
TimedStructureCanvas.Invalidate();
|
||||||
|
TimedAllDayCanvas.Invalidate();
|
||||||
|
|
||||||
|
TimedAllDayHost.InvalidateArrange();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void RefreshMonthView()
|
private void RefreshMonthView()
|
||||||
@@ -977,7 +981,9 @@ public sealed partial class CalendarPeriodControl : UserControl, INotifyProperty
|
|||||||
private void ResetTimedVisualState()
|
private void ResetTimedVisualState()
|
||||||
{
|
{
|
||||||
ResetAnimatedElement(TimedScrollViewer);
|
ResetAnimatedElement(TimedScrollViewer);
|
||||||
ResetAnimatedElement(TimedAllDayHost);
|
|
||||||
|
// TODO: This is buggy.
|
||||||
|
// ResetAnimatedElement(TimedAllDayHost);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void StartNavigationTransition(Compositor compositor, Visual visual, int direction, double width)
|
private static void StartNavigationTransition(Compositor compositor, Visual visual, int direction, double width)
|
||||||
@@ -1009,7 +1015,8 @@ public sealed partial class CalendarPeriodControl : UserControl, INotifyProperty
|
|||||||
StartTimedElementTransition(compositor, TimedScrollViewer, signedTravel, 0f, 0.68f, TimeSpan.FromMilliseconds(240), direction >= 0 ? 0f : clipInset, direction >= 0 ? clipInset : 0f, animateScale: false);
|
StartTimedElementTransition(compositor, TimedScrollViewer, signedTravel, 0f, 0.68f, TimeSpan.FromMilliseconds(240), direction >= 0 ? 0f : clipInset, direction >= 0 ? clipInset : 0f, animateScale: false);
|
||||||
if (HasTimedAllDayItems)
|
if (HasTimedAllDayItems)
|
||||||
{
|
{
|
||||||
StartTimedElementTransition(compositor, TimedAllDayHost, signedTravel, 0f, 0.68f, TimeSpan.FromMilliseconds(240), direction >= 0 ? 0f : clipInset, direction >= 0 ? clipInset : 0f, animateScale: false);
|
// TODO: This is buggy.
|
||||||
|
// StartTimedElementTransition(compositor, TimedAllDayHost, signedTravel, 0f, 0.68f, TimeSpan.FromMilliseconds(240), direction >= 0 ? 0f : clipInset, direction >= 0 ? clipInset : 0f, animateScale: false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1040,7 +1047,8 @@ public sealed partial class CalendarPeriodControl : UserControl, INotifyProperty
|
|||||||
StartTimedElementTransition(compositor, TimedScrollViewer, 0f, 18f, 0f, TimeSpan.FromMilliseconds(240), 0f, 0f, animateScale: false);
|
StartTimedElementTransition(compositor, TimedScrollViewer, 0f, 18f, 0f, TimeSpan.FromMilliseconds(240), 0f, 0f, animateScale: false);
|
||||||
if (HasTimedAllDayItems)
|
if (HasTimedAllDayItems)
|
||||||
{
|
{
|
||||||
StartTimedElementTransition(compositor, TimedAllDayHost, 0f, 18f, 0f, TimeSpan.FromMilliseconds(240), 0f, 0f, animateScale: false);
|
// TODO: This is buggy.
|
||||||
|
// StartTimedElementTransition(compositor, TimedAllDayHost, 0f, 18f, 0f, TimeSpan.FromMilliseconds(240), 0f, 0f, animateScale: false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1059,7 +1067,8 @@ public sealed partial class CalendarPeriodControl : UserControl, INotifyProperty
|
|||||||
StartOpacityTransition(compositor, ElementCompositionPreview.GetElementVisual(TimedScrollViewer), 0.8f, TimeSpan.FromMilliseconds(160));
|
StartOpacityTransition(compositor, ElementCompositionPreview.GetElementVisual(TimedScrollViewer), 0.8f, TimeSpan.FromMilliseconds(160));
|
||||||
if (HasTimedAllDayItems)
|
if (HasTimedAllDayItems)
|
||||||
{
|
{
|
||||||
StartOpacityTransition(compositor, ElementCompositionPreview.GetElementVisual(TimedAllDayHost), 0.8f, TimeSpan.FromMilliseconds(160));
|
// TODO: This is buggy.
|
||||||
|
// StartOpacityTransition(compositor, ElementCompositionPreview.GetElementVisual(TimedAllDayHost), 0.8f, TimeSpan.FromMilliseconds(160));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ internal sealed record TimedCalendarLayoutResult(IReadOnlyList<DateOnly> Visible
|
|||||||
|
|
||||||
internal static class TimedCalendarLayoutCalculator
|
internal static class TimedCalendarLayoutCalculator
|
||||||
{
|
{
|
||||||
private const double AllDayItemHeight = 28d;
|
private const double AllDayItemHeight = 32d;
|
||||||
private const double AllDayItemGap = 4d;
|
private const double AllDayItemGap = 4d;
|
||||||
private const double AllDaySectionPadding = 6d;
|
private const double AllDaySectionPadding = 6d;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user