我有一个售货亭应用程序构建在Microsoft®2.02.0 SDK 和WPF. 用于部署的设备是一个信息亭,没有安装Visual Studio. 在售货亭上运行该应用程序时,我错过了一些DLL Microsoft.Surface.Core,因此我尝试安装Microsoft®Surface®2.0SDK,但需要VS. 错误: 在安装Microsoft Surface 2.0 SDK. 我想知道一项工作以安装SDK而不使用VS ...或其他方法? 解决方案 SDK需要Visual Studio,但运行时不需要. 从相同的位置下载运行时组件,您可能下载了您可能下载的SDK来自. 单击下载时,您可以选择下载运行时安装程序. 其他解决方案 尝试以下方法: 首先安装XNA游戏框架运行时4.0(XNAFX40_REDIST.MSI) 使用以下PS代码而不是我的原始版本: foreach ($base in @('HKLM:\Softwar
以下是关于 pixelsense 的编程技术问答
Windows表单应用程序: 是否有一种方法可以检查设备(Microsoft Surface 55英寸触摸屏) 没有从用户那里收到任何互动(触摸),并且是否超过5分钟应显示确认框,询问您要继续还是退出.在这5分钟内,闪存文件或视频将运行.如果视频正在运行(我已经嵌入了 axwindowsmediaplayer 在我的获胜表格中),则应暂停它,然后显示确认框. 我想使用 c#代码在 Visual Studio 2013 Professional . 上实现这一目标. 我遇到了一些功能, threads : 我发现的选择之一是使用 getlastinputinfo()函数.但是,我不确定它是否适用于触摸交互.我没有Microsoft Surface设备要测试.来自MSDN的报价: 此功能对于输入空闲检测很有用.但是,getlastinputinfo并未在所有运行会议上提供全系统的用户输入信息.相反,GetLastInputInfo仅为调用该功能的会话提供特定于
我访问了 解决方案 将SDK 2.0安装在2012年2月2日的2012年2月2日更新,其中Win 7和Visual Studio 2010.然后从模板中创建一个Surface项目.更改主表面窗口(我忘记了类名.)将其从窗口继承而不是表面窗口,如果您希望它可以在Windows 8上工作.将控件的Surface SDK重新分布组件复制到文件夹中,以在新项目中以后参考.您可以将Visual Studio创建的项目升级到VS2012.从那里创建一个模板.希望这将您指向正确的方向.我已经有一段时间没有做到了,我的头顶写作. -mark 其他解决方案 您必须参考以下DDL: microsoft.surface.core.dll, Microsoft.surface.dll, Microsoft.surface.presentation.design.dll, Microsoft.surface.presentation.dll, Microsoft.surface.presentat
有什么办法可以通过文本块(或标签)检测到很长的触摸? 解决方案 有可能以期待的方式这样做.创建一个具有特定间隔的计时器.当用户轻按时启动它并在计时器经过时返回方法.如果用户释放手,请用false标志返回该方法. public static Task TouchHold(this FrameworkElement element, TimeSpan duration) { DispatcherTimer timer = new DispatcherTimer(); TaskCompletionSource task = new TaskCompletionSource(); timer.Interval = duration; MouseButtonEventHandler touchUpHandler = delegate { timer.Stop(); if (t
这可能是一个愚蠢的问题,但我在任何地方都找不到答案. Microsoft Surface SDK 2.0仅与Microsoft Surface产品一起使用,还是可以与其他触摸屏一起使用?我真的很喜欢SurfaceTextBox控件的工作方式(点击时弹出屏幕键盘),并且想知道我是否可以在正在制作的程序中使用它(使用ELO触摸屏监视器,而不是多触摸). 编辑 感谢您的回复.我下载并安装了SDK 2.0,并尝试运行包含的示例应用程序.他们似乎对我的手指触摸没有反应,但是如果我包含的模拟器,则可以工作.我正在Windows 7上运行此操作. 解决方案 是的,您可以将其与任何触摸屏一起使用.它在Winrt/Windows 8以及Windows 7上都可以使用. 安装程序要求您安装Visual Studio 2010,但是如果您在工具箱中手动导入DLL,也可以在Visual Studio 2012和2013预览中使用它. 这是另一个问题的答案,由我的一位同事回答,如何将Surface S
最近,我在Microsoft Surface应用程序中进行了很多开发.我还读了一些有关如何测试这些应用程序的信息. 当前,我正在使用单元测试(软件包Microsoft.visualstudio.testtools.unittesting)来测试单个方法的低级别功能.我正在使用Surface Simulator API测试的用户界面.对于这两种方法,我总是在同一解决方案中创建一个额外的项目. ,但我不确定这是否真的是一种很好的方法.单元测试或多或少可以,但是通过单击各种内容并检查没有错误,用户界面的测试或多或少受到限制.尽管这项检查并非真正明确完成. 所以我问还有其他方法可以有益地测试表面应用程序吗? 解决方案 这是在Surface团队上完成的:Surface SDK中包含的模拟器API将使您自动向您的应用发送假触摸输入.将其与WPF的"自动化同行"相结合,以使UI做正确的事情自动化验证.对于源自标准WPF控件的表面控件,您可以使用WPF随附的Automation
我有一个内部具有ScrollViewer的SurfaceListBox.我可以访问该ScrollViewer,我想检测滚动何时结束.由于它是一个触摸应用程序,我可以拖动它,现在我正在检测到PreviewTouchUp做我想做的事,但是,如果我像在智能手机上一样快速滑动,因为ScrollViewer仍在拖动/滚动,PreviewTouchUp没有反映滚动的末端,而是在之前触发. 我曾尝试过Manipulation事件,以及其他几个事件和ScrollViewer和SurfaceListBox.我也尝试过ScrollViewer.PanningDeceleration,老实说,我看不出有所不同.基本上,到目前为止没有运气. 那么,即使在PreviewTouchUp之后,我如何检测滚动的末端? 解决方案 您不能只处理 ScrollViewer.ScrollChanged事件?从链接页面中,它说是... 当检测到滚动位置,范围或视口大小时发生更改. 因此,您只需启动
我想在Microsoft Surface应用程序中显示PDF文档.我进行了一些搜索并发现了很多可能性,但是如果在Microsoft Surface中使用了所有的缺点. >方法看起来不错,但是我很难检查如何启用滚动. 任何想法如何在其中启用滚动? 解决方案 在我们的应用程序中,我们需要显示大量客户提供的内容.而不是直接显示PDF,我们创建图像文件(每个页面一个),并创建一个控件以更改页面,滚动,调整大小以及显示数据所需的任何内容. 有缺点:没有PDF表单或按钮,我不会列出更多.但是,此功能是文档中的业务逻辑,实际上应该在您的应用程序中以多点触摸替代方案表示. 有时需要显示大量文本,但是如果可能的话,您应该真正将其最小化,因为表面表并非设计为提供最佳的阅读体验. 编辑:当制作特定的手势时,您可以尝试将窗口消息发送到PDF查看器控件. Bing Map的控制被以这种方式AFAIK.尽管如此,我认为这不会增加一个很好的体验. 其他解决方案 您可以尝试
我正在尝试在使用MVVM模式构建的表面应用程序中实现拖放功能.我正在努力提出一种在遵守MVVM模式时实施此功能的方法.尽管我试图在表面应用程序中执行此操作,但我认为该解决方案也足够通用,可以适用于WPF. 我正在尝试产生以下功能: 用户在sctateViewItem中联系一个框架以开始拖动操作(ScatterViewItem的特定部分启动拖动/滴功能) 当拖动操作开始在原始散点图上创建并强加了该散点图的副本时,该副本是用户将拖动并最终删除的 用户可以将项目放在另一个scatsviewitem上(放置在单独的散点图中) 整体交互与Surface SDK中提供的购物车应用程序非常相似,只是源对象包含在散点图中而不是列表框中. 我不确定如何进行以实现我的视图模型之间的适当通信以提供此功能.我遇到的主要问题是在用户联系Frameworkelement时复制sctateViewItem. 解决方案 您可以使用附件的属性.创建一个附件的属性,并在SetProper
我已经继承了一个针对Net 3.5的WPF应用程序,并且我必须将其安装在Surface Pro 4(i5)中.该应用程序悬挂在不同的点,我观察到动画有时永远不会发射完整的事件(也许它们在某个时候最终出现,但在持续时间属性中表达的时间却没有). 作为一个周转,我尝试了因此,我发现唯一能够成功运行针对net 3.5的WPF应用程序的唯一方法是使用Windows设备管理器来禁用人类接口中的所有触摸屏相关设备. 有人知道我如何在Surface 4 Pro中禁用WPF平板电脑支持? 注意.尽管在禁用并启用触摸屏驱动程序,不足以禁用" HID-COMPERIANT触摸屏设备":直到" Intel(R)精确触摸设备"不是禁用的,触摸屏仍然被激活,大多数WPF应用程序都会失败. 解决方案 我有同样的问题,并且能够使用反射找到工作. The issue is caused by WPF updating its internal tablet device handling
我有一个WPF Microsoft Surface应用程序,我正在使用MVVM-Pattern. 我有一些在后面的代码中创建的按钮,我想将命令绑定到它们,但我只知道在XAML 中的工作方式 这样: 但是我不能这样做,因为我的按钮不存在于XAML中,而仅在后面的代码中. 那么,像该命令像该命令在代码后面如何工作? 解决方案 假设您将命名为" SurfaceButton1"的SurfaceButton,并且可以访问命令实例,则可以使用以下代码: SurfaceButton1.Command = SaveReservationCommand; 其他解决方案 如果按钮可以访问命令,则接受的答案将很好地工作.但是,在MVVM中,通常将它们保持分开(视图中的按钮和视图模型中的命令)
我试图将一条线的两个点绑在两个椭圆上,这些椭圆都在散点图内. 目前,我能够绑定到saterecenter.x和.y的sctateViewItem,但由于椭圆不是该sctateViewItem中的唯一元素(也有标签),所以它是偏外的,所以线的终点不是椭圆的中心. 椭圆没有真正的中心属性. 我想知道我是否能够用固定金额抵消属性绑定,或者是否有其他绑定,我可以使用,以便可以在容器类中使用正确的椭圆中心(用于椭圆,标签和散点图),并将其返回为绑定的来源. 以下是我要设置绑定的代码. this.avatar指Line形状. node_one和node_two是容器对象,其中包含ScatterViewItem. Node类还包含Ellipse,我本质上是我想要的中心,但我对当前源的简单偏移感到满意. BindingOperations.SetBinding(this.avatar, Line.X1Property, new Binding {
我正在为 tagvisualizer MS上的控制权表面项目.从理论上讲,控制似乎很棒,使您可以回应现实世界物理对象的输入 问题是控件将覆盖整个屏幕(因为我想在整个屏幕上捕获标签),因此,我的应用程序中没有其他控件会收到触摸事件. (除非它们是视觉树中的直接上升). 在我的应用中,我想拥有一种方法的"层"类型,每层可以响应(联系)输入: Window `- Grid `- LayersPanel `- TagVisualizer `- Layer 1 `- Layer 2 `- Layer 3 `- Layer 4 现在,我将标签可视化器放在哪里都没关系,它总是会从所有或其他层中窃取联系事件. (由于对我来说,在实践中似乎完全没有用,因为它总是会干扰您应用程序的其他控件.我在这里错过了什么? 所以我的问题是:关于如何解决这个问题的任何建议
我有一些直接的WPF 3.5控件处理左鼠标咔嗒声,我需要在Surface App(SDK 1.0)中使用.我面临的问题是默认情况下不起作用.我正在考虑将每个控件包裹在SurfaceContentControl中,然后将ContactTouchDown或ContactTapGesture转换为相应的MouseDown事件. 问题归结为 - 如何"注入"或模拟任意路由鼠标事件?我尝试过InputManager.Current.ProcessInput(),但没有走得太远.任何帮助都将受到赞赏. 解决方案 尝试使用AutomationPeer类.例如,按钮是按钮.下面的代码启动单击. ButtonAutomationPeer peer = new ButtonAutomationPeer(button); IInvokeProvider provider = (IInvokeProvider)peer.GetPattern(PatternInterface.Invoke);
对于我的应用程序,我想使用所有内置的操作可能性,例如飞涨.但是,如果用户在屏幕上按3个手指,我想显示特定的UI元素.那么,检查用户是否同时按下3个手指的最佳方法是什么? (而无需禁用内置的操纵可能性). 我的第一种方法是在我的布局的顶部网格元素上注册达阵事件.如果处理程序,我会得到联系.但是该怎么办? 只需检查联系人是否是指纹,将其存储在列表中,然后检查列表是否已包含两个类似的配合程序? 还是有更性感的解决方案? 谢谢! 编辑: 遵循答案,我写了两种方法: private void OnContactDown(object sender, ContactEventArgs e) { if (this.ContactsOver.Count == 3) { Console.WriteLine("3 contacts down. Check proximit