in SamplesCommon/SamplesCommon/SwipeDismissPanel.cs [43:82]
public SwipeDismissPanel()
{
m_rootVisual = ElementCompositionPreview.GetElementVisual(this);
m_compositor = m_rootVisual.Compositor;
CompletedOffset = 2000;
CompletionThreshold = 400;
m_interactionSource = VisualInteractionSource.Create(m_rootVisual);
m_interactionSource.PositionXSourceMode = InteractionSourceMode.EnabledWithInertia;
var snapHomeEndpoint = InteractionTrackerInertiaRestingValue.Create(m_compositor);
snapHomeEndpoint.Condition = m_compositor.CreateExpressionAnimation("true");
snapHomeEndpoint.RestingValue = m_compositor.CreateExpressionAnimation("0");
var snapNearConditionExpression = m_compositor.CreateExpressionAnimation(
"target.Position.X < -target.CompletionThreshold");
var snapNearValueExpression = m_compositor.CreateExpressionAnimation("-target.CompletedOffset");
var snapNearEndpoint = InteractionTrackerInertiaRestingValue.Create(m_compositor);
snapNearEndpoint.Condition = snapNearConditionExpression;
snapNearEndpoint.RestingValue = snapNearValueExpression;
var snapFarConditionExpression = m_compositor.CreateExpressionAnimation(
"target.Position.X > target.CompletionThreshold");
var snapFarValueExpression = m_compositor.CreateExpressionAnimation("target.CompletedOffset");
var snapFarEndpoint = InteractionTrackerInertiaRestingValue.Create(m_compositor);
snapFarEndpoint.Condition = snapFarConditionExpression;
snapFarEndpoint.RestingValue = snapFarValueExpression;
m_inertiaModifiers = new InteractionTrackerInertiaModifier[] {
snapNearEndpoint,
snapFarEndpoint,
snapHomeEndpoint };
this.Loading += OnLoading;
this.Unloaded += OnUnloaded;
}