C# WP7枢轴控制和WebBrowser控制
我有一个Pivot,它包含一个WebBrowser控件,几乎占据了整个页面(当然是Pivot标题中的appart) 我想弄清楚如何让WebBrowser控件允许用户向左/向右滑动以激活Pivot控件。目前它只是左右平移WebBrowser控件 这能做到吗C# WP7枢轴控制和WebBrowser控制,c#,silverlight,windows-phone-7,C#,Silverlight,Windows Phone 7,我有一个Pivot,它包含一个WebBrowser控件,几乎占据了整个页面(当然是Pivot标题中的appart) 我想弄清楚如何让WebBrowser控件允许用户向左/向右滑动以激活Pivot控件。目前它只是左右平移WebBrowser控件 这能做到吗 谢谢我不知道WP7 Pivot,但是Pivot控件上是否有任何预览*事件,允许您处理触摸并将其标记为已处理?这类似于将地图放在Pivot中-这里讨论了-已经在很多问题中提到过- 一般来说,建议似乎是基于可用性的: 尽量避免将使用触摸的控件放在
谢谢我不知道WP7 Pivot,但是Pivot控件上是否有任何预览*事件,允许您处理触摸并将其标记为已处理?这类似于将地图放在Pivot中-这里讨论了-已经在很多问题中提到过- 一般来说,建议似乎是基于可用性的:
- 尽量避免将使用触摸的控件放在数据透视项的内部
另一方面,如果您只是使用web浏览器控件来处理非常少量的静态html(因此您根本不需要任何滚动),那么您可以从web浏览器中删除HitTesting。虽然我无法确切地告诉您如何将滑动传递到pivot,我可以告诉你如何做这项工作的一部分:如何捕捉/分析/禁用WebBrowser上的自定义手势 如果我没记错的话,在7.0中:
- WebBrowser组件几乎只包含一个内部TileHost,该TileHost包裹在一些网格/边框中
- TileHost完成了与处理触摸事件相关的所有工作
- TileHost完全在内部(在本机层中)完成了该操作,而.Net没有看到任何操作事件(我认为),或者至少它忽略了在上层处理/覆盖操作事件的所有尝试。WebBrowserInterop类在这些问题上基本上是空的
WebBrowser
PanZoom
ContentPresenter
Border/Name="border" <- you want this one
TileHost
WebBrowser
平移
任命者
Border/Name=“Border”调用下面的方法,并将参数作为PivotControl x:Name和WebBrowserControl x:Name传递给此方法
这里WebBrowserControl被放置在第二个透视项中,即透视索引为1,我试图向左或向右滑动,并分别到达透视索引2或1
public static void SwipteLeftRight(Microsoft.Phone.Controls.Pivot pivotControl, Microsoft.Phone.Controls.WebBrowser webBrowserControl)
{
var gesListener = GestureService.GetGestureListener(webBrowserControl);
gesListener.Flick += ((sen, args) =>
{
if (args.Direction == System.Windows.Controls.Orientation.Horizontal)
{
if (args.HorizontalVelocity < 0)
{
if (((Microsoft.Phone.Controls.PivotItem)(pivotControl.SelectedItem)).Header.ToString().Trim() == "Pivot Item name")
{
pivotControl.SelectedIndex = 2; //Next Pivot item
}
}
else if (args.HorizontalVelocity > 0)
{
if ((Microsoft.Phone.Controls.PivotItem)(pivotControl.SelectedItem)).Header.ToString().Trim() == "Pivot Item name")
{
pivotControl.SelectedIndex = 0; // Previous Pivot Item
}
}
}
});
}
public static void swipterleftright(Microsoft.Phone.Controls.Pivot-pivotControl、Microsoft.Phone.Controls.WebBrowser-WebBrowser-control)
{
var gesListener=GestureService.getgestureStener(webBrowserControl);
gesListener.Flick+=((sen,args)=>
{
if(args.Direction==System.Windows.Controls.Orientation.Horizontal)
{
如果(args.HorizontalVelocity<0)
{
if(((Microsoft.Phone.Controls.PivotItem)(pivotControl.SelectedItem)).Header.ToString().Trim()=“数据透视项名称”)
{
pivotControl.SelectedIndex=2;//下一个数据透视项
}
}
否则如果(args.HorizontalVelocity>0)
{
if((Microsoft.Phone.Controls.PivotItem)(pivotControl.SelectedItem)).Header.ToString().Trim()=“数据透视项名称”)
{
pivotControl.SelectedIndex=0;//上一个数据透视项
}
}
}
});
}
这对我有用。干杯是的,我想到了,但它是一个活动的webbrowser控件,需要链接和滚动。Silverlight中没有预览事件WB:中关于泄漏的小警告和Colin编写的一些可用代码: