Tag: windows runtime

Windows 8 GridView – 禁用项目点击可视化

是否可以删除gridview中项目的点按效果?

Windows 8上具有共享目标的InvalidCastException

我正在尝试使用Windows 8“Metro Styled Apps”,MVVM Light,并希望创建一个共享目标 – 到目前为止一切顺利。 但是如果我在OnShareTargetActivated方法中并且想要将项添加到ObservableCollection,我会在类类型和COM对象之间捕获InvalidCastException。 Das COM-Objekt des Typs“System.Collections.Specialized.NotifyCollectionChangedEventHandler”kann nicht in den Klassentyp“System.Collections.Specialized.NotifyCollectionChangedEventHandler”umgewandelt werden。 Instanzen von Typen,die COM-Komponentenrepräsentieren,könnennichtin andere Typen umgewandelt werden,die keine COM-Komponentenrepräsentieren。 Echn Umwandlung in Schnittstellen istjedochmöglich,sofern die zugrunde liegende COM-Komponente QueryInterface-AufrufefürdieIID derSchnittstelleunterstützt。 英文版: 无法将类型为“System.Collections.Specialized.NotifyCollectionChangedEventHandler”的COM对象强制转换为类类型“System.Collections.Specialized.NotifyCollectionChangedEventHandler”。 表示COM组件的类型实例不能转换为不代表COM组件的类型; 但是只要底层的COM组件支持对接口的IID的QueryInterface调用,它们就可以转换为接口。 现在我有点困惑,不知道如何正确处理这种行为。 MainViewModel main1 = new ViewModelLocator().Main; MainViewModel main2 = new MainViewModel(); var conversation […]

构造函数中的WinRT异步数据加载

我想在ViewModel的构造函数中加载一些数据,但由于WinRT的异步性质,我不得不使用异步方法。 不幸的是我不能有异步构造函数所以我试图将异步方法用作同步方法。 我确信有一种更好的方法可以在应用程序加载时加载数据(异步),但我现在的想法是空白。 我正在寻找一种方法来修复我的应用程序使用我想要的思路,或者使用更合适的方法永久修复它。 代码非常简单(甚至缺少ViewModel)只是为了演示我面临的问题。 public sealed partial class MainPage : Page { public string Data { get; set; } public DataService _dataService { get; set; } public MainPage() { this.InitializeComponent(); _dataService = new DataService(); var t = _dataService.GetData(); Data = t.Result; } /// /// Invoked when this page is about to be displayed in […]

从Windows 8应用程序中生成的缓冲区播放声音

我正在将一些C#Windows Phone 7应用移植到Windows 8。 手机应用程序使用XNA SoundEffect从缓冲区播放任意声音。 在最简单的情况下,我只需创建所需持续时间和频率的正弦波。 持续时间和频率都可能有很大差异,所以我宁愿不依赖MediaElements(除非有一些方法可以改变基本文件的频率,但这只会帮助我生成单一频率)。 WinRT中的XNA SoundEffectInstance相当于什么? 我假设我需要使用DirectX,但我不确定如何从其他C#/ XAML应用程序中进行此操作。 我已经看过SharpDX ,但它似乎没有我认为我需要使用的DirectSound,SecondaryBuffer,SecondaryBuffer类。 我上面做了一些假设。 可能是我正在寻找错误的类,或者有一种完全独立的方式从Windows 8应用程序生成任意声音。 我找到了一个使用SharpDX的XAudio2通过AudioBuffer播放wav文件的例子 。 这看起来很有希望,我只需要将生成的音频缓冲区替换为本机文件流。 PM>安装包装SharpDX PM> Install-Package SharpDX.XAudio2 public void PlaySound() { XAudio2 xaudio; MasteringVoice masteringVoice; xaudio = new XAudio2(); masteringVoice = new MasteringVoice(xaudio); var nativefilestream = new NativeFileStream( @”Assets\SpeechOn.wav”, NativeFileMode.Open, NativeFileAccess.Read, NativeFileShare.Read); var soundstream = new SoundStream(nativefilestream); var […]

处理两个,三个,四个手指在WinRT应用程序中滑动手势

我有以下代码: private Point initialpoint; private void ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e) { initialpoint = e.Position; } private void ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) { Point currentpoint = e.Position; if (currentpoint.X – initialpoint.X >= 100) { System.Diagnostics.Debug.WriteLine(“Swipe Right”); e.Complete(); } } 我可以非常轻松地处理1个手指轻扫手势,但我也想处理2,3,4个手指轻扫手势。 谁能告诉我怎么做?

Windows Phone 8.1位置跟踪

我想实现一个不断向Web服务发送设备位置的应用程序。 查看文档,我找到了Geolocation类和一些讨论位置跟踪的文章: 如何连续跟踪Windows Phone 8的电话位置 如何在Windows Phone 8的后台运行位置跟踪应用程序 实现这些文章中讨论的两个示例项目,我注意到每个位置更新都不会触发geolocator_PositionChanged()事件。 两次执行事件之间有一段延迟(大约10/15分钟)。 奇怪的是,即使App在前台执行(不仅在后台),也会发生这种情况。 我正在使用Windows Phone模拟器。 在我的应用程序中,我有一个地图控件,我需要显示用户的位置,因此,我需要为每个位置更新正确触发geolocator_PositionChanged()事件,没有延迟。 1)如何使用Geolocator类跟踪(无延迟)设备的位置? 通过网络搜索,我找到了GeoCoordinateWatcher类,它提供了对设备的连续位置跟踪。 这是代码: public MainPage() { InitializeComponent(); this.GetCoordinate(); } private void GetCoordinate() { var watcher = new GeoCoordinateWatcher(GeoPositionAccuracy.High) { MovementThreshold = 1 }; watcher.PositionChanged += this.watcher_PositionChanged; watcher.Start(); } private void watcher_PositionChanged(object sender, GeoPositionChangedEventArgs e) { //Get position data var pos = […]

图像源和缓存

我使用以下代码显示来自网络服务器的图像: 图像会自动下载,我假设还有一些基于Url的缓存。 我的问题是,当应用程序处于脱机状态时,无法显示缓存的图像。 有没有办法改变缓存行为,以便在没有网络可用时加载图像? 有关缓存的文档指针也非常有用。

在Windows 8网格中处理滑动客户端

我正在尝试实现一个自定义控件,它包含一个带有一些canvas元素作为子元素的网格,当在网格上进行滑动操作时,我打算用canvas元素执行一些操作。 我无法处理网格的滑动,我已经在msdn – win8 Dev论坛上发布了相同的内容

在WinRT应用程序中处理向上滑动,向下滑动,向左滑动和向右滑动手势

我有以下代码: public MainPage() { this.InitializeComponent(); this.ManipulationStarting += MainPage_ManipulationStarting; this.ManipulationStarted += MainPage_ManipulationStarted; this.ManipulationInertiaStarting += MainPage_ManipulationInertiaStarting; this.ManipulationDelta += MainPage_ManipulationDelta; this.ManipulationCompleted += MainPage_ManipulationCompleted; } void MainPage_ManipulationStarting(object sender, ManipulationStartingRoutedEventArgs e) { Debug.WriteLine(“MainPage_ManipulationStarting”); } void MainPage_ManipulationStarted(object sender, ManipulationStartedRoutedEventArgs e) { Debug.WriteLine(“MainPage_ManipulationStarted”); } void MainPage_ManipulationInertiaStarting(object sender, ManipulationInertiaStartingRoutedEventArgs e) { Debug.WriteLine(“MainPage_ManipulationInertiaStarting”); } void MainPage_ManipulationDelta(object sender, ManipulationDeltaRoutedEventArgs e) { Debug.WriteLine(“MainPage_ManipulationDelta”); } void MainPage_ManipulationCompleted(object […]

无法使用StreamSocket连接到TcpListener

我在移动设备上有一个应用程序连接到桌面上的服务器应用程序我在桌面上使用TcpListener,在移动设备上使用TcpClient。 我试图添加对Windows 8的支持,但似乎Microsoft删除了它,现在我们应该使用StreamSocket作为TcpClient和StreamSocketListener作为TcpListener。 我试图更改我的代码,但它甚至没有连接到我的TcpListener。 (请注意,我在台式机上也使用了异步)。 我桌面上的TcpListener: server = new TcpListener(Constants.DEFAULT_PORT); server.Start(); server.BeginAcceptSocket(new AsyncCallback(OnAccept), null); 我的Windows 8上的StreamSocket: var client = new StreamSocket(); await client.ConnectAsync(new EndpointPair(new HostName(“localhost”), “7800”, new HostName(“localhost”), “7800”)); 它通过ConnectAsync线而没有连接,因为桌面上的OnAccept未被调用。 所以我不知道这里有什么不对。