我做这个,它看起来像它的工作原理:(这只是显示如何能做到这一点,不完美的,有一些不必要的代码)
private object oldRootContent;
public ListboxGestureHandlerItem()
{
Loaded += ListboxGestureHandlerItem_Loaded;
LayoutUpdated += ListboxGestureHandlerItem_LayoutUpdated;
}
private void ListboxGestureHandlerItem_LayoutUpdated(object sender, object e)
{
if(oldRootContent != null && (ContentTemplateRoot as Grid) != null)
{
(ContentTemplateRoot as Grid).Children.Add(oldRootContent as FrameworkElement);
oldRootContent = null;
}
}
private void ListboxGestureHandlerItem_Loaded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
{
oldRootContent = (sender as ListboxGestureHandlerItem).ContentTemplateRoot;
this.ContentTemplate = Create(typeof(Grid));
}
protected override void OnPointerMoved(PointerRoutedEventArgs e)
{
base.OnPointerMoved(e);
}
public DataTemplate Create(Type type)
{
return XamlReader.Load(@"<DataTemplate
xmlns=""http://schemas.microsoft.com/winfx/2006/xaml/presentation"">
<" + type.Name + @"/>
</DataTemplate>") as DataTemplate;
}