If you open a Popup (for example RadDateTimePicker's calendar) and touch a button in the Popup, then get back to the host window and touch on the up or down button, the touch up doesn't happen and the corresponding RepeatButton stay pressed. This recreates only on touch devices. The touch should happen in an area of the Popup which is located outside of the host window.
To work this around, create a custom RadCalendar control and override its OnApplyTemplate() method. In the method subscribe to the TouchManager.TouchDown event and handle it.
public class CustomRadCalendar : RadCalendar
{
public override void OnApplyTemplate()
{
var transitionPanel = GetTemplateChild("TransitionPanel") as TransitionPanel;
if (transitionPanel != null)
{
TouchManager.AddTouchDownEventHandler(transitionPanel, this.OnTransitionPanelTouchDown);
}
base.OnApplyTemplate();
}
private void OnTransitionPanelTouchDown(object sender, TouchEventArgs args)
{
args.Handled = true;
}
}
To use the custom calendar,
extract the ControlTemplate of RadDatePicker and replace the default RadCalendar in the template with the custom implementation.