我在WP7中有一个webscrollview,它最初没有焦点(内容是hittestVisible,因此取消了scrollviewers的hittestvisibility).当我将内容的可见性设置为false时,我可以滚动滚动浏览器,但是仅在解除手指之后再次将其重新放回.我真的很喜欢重点转移,之后重新应用焦点,以便我可以在滚动视图获得焦点后滑动,不要等待下一个操作开始事件触发.
这是我的代码:
<UserControl 
x:Class="WTFApp.Resources.ViewControllers.DetailedItemContentControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:EiBaseApi.Animation;assembly=EiBaseApi"
FontFamily="{StaticResource PhoneFontFamilynormal}"
FontSize="{StaticResource PhoneFontSizenormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True" >

<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDeFinitions>
        <RowDeFinition Height="10"/>
        <RowDeFinition Height="*" />
    </Grid.RowDeFinitions>
    <Grid.Resources>
        <Storyboard x:Name="MediatedListBoxContentAnimator">
            <DoubleAnimation x:Name="MediatedAnimation"
                             Storyboard.TargetName="WebScrollViewMediator"
                             Storyboard.TargetProperty="ScrollableWidthMultiplier" >
            </DoubleAnimation>
        </Storyboard>

    </Grid.Resources>

    <ScrollViewer x:Name="Scroller"
                  HorizontalScrollBarVisibility="Auto" 
                  VerticalScrollBarVisibility="disabled"
                  ManipulationMode="Control"
                  Grid.Row="1" 
                  Grid.RowSpan="2" >
        <StackPanel Name="WebScrollView" Orientation="Horizontal">
            <UserControl Name="LeftContentControl"   MinWidth="480" />
            <UserControl Name="MiddleContentControl" MinWidth="480" />
            <UserControl Name="RightContentControl"  MinWidth="480" />
        </StackPanel>
    </ScrollViewer>
    <local:ScrollableItemAnimationMediator x:Name="WebScrollViewMediator" 
                                           ScrollViewer="{Binding ElementName=Scroller}"/>        
</Grid>

在C#中:

protected override void TouchFrameDelta( object sender,TouchFrameEventArgs e )
    {
        if ( UserManipulating == ManipulationState.ManipulationStopped )
        {
            UserManipulating = ManipulationState.ManipulationStarted;
            ManipulationStartingPoint = e.GetPrimaryTouchPoint( null ).Position;
        }
        //if we are already manipulating the scrollviewer,we do nothing
        if ( UserManipulating != ManipulationState.ManipulationStarted )
        {
            return;
        }
        TouchPoint touchPoint = e.GetPrimaryTouchPoint( null );
        float differenceStart = ( float )( touchPoint.Position.X - ManipulationStartingPoint.X );
        if ( Math.Abs( differenceStart ) >= 25 )
        {
            if ( browserListIsHitTestVisible )
            {
                browserListIsHitTestVisible = false;
                MiddleContentControl.Focus( );
                MiddleContentControl.UpdateLayout( );
                return;
            }

            float differenceDelta = ( float ) ( touchPoint.Position.X - ManipulationDeltaPoint.X );
            if ( touchPoint.Action == TouchAction.Up )
            {                    
                UserManipulating = ManipulationState.ManipilatingScrollViewCompleted;
                OnManipulationCompleted( differenceDelta );
            }                          
        }
        ManipulationDeltaPoint = touchPoint.Position;      
    }

TouchFrameDelta是Touch.FrameReported事件.
有没有人有一个想法为什么这不工作,如何解决?
提前致谢

只是为了澄清,ManipulationStarted(和Completed)不能手动触发,因为它们的EventArgs没有任何公共构造函数被封装.

你所要求的不是我认为可能的事情.由于您的子项目最初不支持任何交互,所以即使在执行另一个事件之前设置了IsHitTestVisible,事件也不会冒泡.

我无法看到您正在尝试归档到这里,但是滚动滚动,并且Webbrowser不是我将推荐使用的7.0 / 7.5,因为控件的功能非常有限.

Windows Phone 7手动启动 – WP7手动启动的更多相关文章

  1. android – 如何在材料设计中的工具栏上添加搜索按钮

    我试图在弹出的设置左侧添加搜索按钮,但我无法添加工具栏.这是我的menu.xml代码:这是我的toolbar.xml:我正在获取工具栏但没有获得搜索按钮?

  2. android – 为标记片段找到意外的名称空间前缀“xmlns”为标记片段找到的意外名称空间前缀“map”

    为标记片段找到的意外名称空间前缀“xmlns”的原因为标记片段找到了意外的命名空间前缀“map”?

  3. xaml – Windows通用响应式设计重新定位

    编辑:我使用一个包含2行和2列的Grid工作,使用AdaptiveTrigger将所有内容从行移动到列,反之亦然.可以通过setter更改RelativePanel附加属性值.语法如下:

  4. 在哪里可以找到Microsoft docx格式的架构(.xsd文件)

    考虑一个需要docx文档文本而没有用于在R中处理的页眉和页脚的用户.如果将file.docx重命名为file.zip并分析文档document.xml,那么它就是一个包含文本的格式良好的XML文档.Microsfot是否在docx文件的ZIP包中发布了此document.xml子文件的架构?

  5. 如何在WPF中将样式应用于Window Control?

    我正在为App.xaml中的Window设置样式,如下所示:我基本上希望每个Window都将其WindowStyle的属性值设置为None;但它没有用.我在这里想念的是什么?回答问题的人对从具有应用样式的基本窗口继承有一个有趣的想法.

  6. WPF控件作为资源字典中的StaticResource,用于多个WPF Windows?

    我有一个Button控件作为资源字典中的资源,如下所示:我现在在2个不同的Windows.xaml文件中使用上面的按钮控件绑定到ContentControl控件的Content属性,其中每个Window都有自己的DataContext,因此每个窗口应根据其viewmodel的BoundText属性值显示上面按钮控件的内容,如下所示每个窗口.但是,问题是两个Window都显示了BoundText属性的相同值,这意味着两个WPFWindows都具有相同的资源按钮控制实例,在Windows中都使用.如何解决此问

  7. Windows Phone 7手动启动 – WP7手动启动

    我在WP7中有一个webscrollview,它最初没有焦点(内容是hittestVisible,因此取消了scrollviewers的hittestvisibility).当我将内容的可见性设置为false时,我可以滚动滚动浏览器,但是仅在解除手指之后再次将其重新放回.我真的很喜欢重点转移,之后重新应用焦点,以便我可以在滚动视图获得焦点后滑动,不要等待下一个操作开始事件触发.这是我的代码:在C#

  8. Windows Phone Phone 7的Windows Phone屏幕高度不能100%

    我正在使用PhoneGap/Cordova开发WindowsPhone应用程序(尽管如此,我相信我遇到的问题使得PhoneGap无关紧要).无论我做什么,我的html页面的标签都不会垂直填满屏幕.在Chrome或甚至IE中运行网页时看起来不错这是模拟器上的样子,我在.css中的标签中添加了一个蓝色边框,用于强调发生了什么:这是身体的css:这里是页脚css:并且,因为它可能是重要的,这是xaml文

  9. PHP SoapClient:未知所需的WSDL扩展名

    我正在尝试实现在SAPPI系统上运行的Web服务.我看到的WSDL看起来像这样:我的PHP文件看起来像这样:当我运行我的脚本时,我收到以下错误:我尝试搜索谷歌和StackOverflow上的错误,并检查了PHP.net上的评论,但我似乎无法弄清楚我必须改变什么才能使此服务运行.我也试图打开WSDL扩展名URL,似乎存在.有人可以在这里扔我骨头吗?我尝试删除扩展程序网址,导致以下错误:目前我唯一可以想到的解决方案是更新您的UsePolicy标签:更改标签:到这个:

  10. 使用PHP中的XSLT转换XML

    我希望结果是XHTML页面上的表中的数据.这可能是您问题的一部分答案.关于使用两个XML文件,您有几个选择.您可以将两个XML文件合并为一个较大的文件,然后对其应用转换.或者,您可以使用XSLTdocument()函数从XSLT中加载其中一个XML文件.1.制作一个大型XML文档2.使用XSTL文档()函数我倾向于使用第一种技术而不是第二种技术.我不喜欢将文件名硬编码到XSLT模板中.当我使用第二种方法时,我通常会将文件名作为外部参数传递,以避免在XSLT中对其进行硬编码.

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部