Tag: windows runtime

如何允许在ListView / GridView项控件中进行操作,同时允许在ListView / GridView上进行滚动和交叉滑动操作?

具体来说,我有一个自定义用户控件,它接收操作事件以滚动自定义DirectX控件。 此控件和其他类似控件是GridView中的项目。 我希望GridView能够水平滚动默认的TranslateRailsX操作,而控件应该能够接收TranslateRailsY操作事件。 在我到目前为止的实验中,通过将控件的操作模式设置为System,我可以使GridView滚动工作,但控件不会接收任何操作事件。 通过将控件的操作模式设置为All,TranslateY或TranslateRailsY,我可以获取自定义控件来接收操作事件,但GridView触摸滚动将无法工作。 我怎么能同时允许这些操作呢?

使用C#/ XAML在地铁样式应用程序中将canvas保存为图像

我正在使用C#/ XAML开发类似地铁风格的应用程序。 我想保存canvas上绘制的任何内容作为图像。 我检查了这个解决方案,但它没有帮助我。 将canvas保存到位图 http://blogs.msdn.com/b/saveenr/archive/2008/09/18/wpf-xaml-saving-a-window-or-canvas-as-a-png-bitmap.aspx 那么如何将canvas内容保存为图像呢? 请帮我进行示例编码。

一个任务可以有多个等待者吗?

我正在为Windows 8项目提供异步服务,并且有一些此服务的异步调用,一次只能调用一次。 public async Task CallThisOnlyOnce() { PropagateSomeEvents(); await SomeOtherMethod(); PropagateDifferentEvents(); } 由于你无法在锁定语句中封装异步调用,我想到使用AsyncLock模式,但我认为我可能会尝试这样的事情: private Task _callThisOnlyOnce; public Task CallThisOnlyOnce() { if(_callThisOnlyOnce != null && _callThisOnlyOnce.IsCompleted) _callThisOnlyOnce = null; if(_callThisOnlyOnce == null) _callThisOnlyOnce = CallThisOnlyOnceAsync(); return _callThisOnlyOnce; } private async Task CallThisOnlyOnceAsync() { PropagateSomeEvents(); await SomeOtherMethod(); PropagateDifferentEvents(); } 因此,最终只能同时执行CallThisOnlyOnceAsync调用,并且多个awaiters挂钩在同一个Task上。 这是一种“有效”的方法吗?或者这种方法有一些缺点吗?

将文本附加到文件Windowsapp store应用(Windows RT)

我正在寻找一种方法将字符串文本附加到Windowsapp store应用程序中的文件。 我尝试读取该文件,然后创建一个新文件来覆盖它,但Windows Store Apps C#不能像C一样工作,当创建一个具有相同名称的新文件时会覆盖旧文件。 目前我的代码是打开旧文件,读取它的内容,删除它并创建一个新文件,其中包含我读过的内容以及我想要追加的内容。 我知道有更好的方法,但我似乎无法找到它。 那么我如何将文本附加到Windowsapp store应用程序(Windows RT)中已存在的文件? 编辑 – 我试过这个 var folder = Windows.ApplicationModel.Package.Current.InstalledLocation; var file = await folder.GetFileAsync(“feedlist.txt”); await Windows.Storage.FileIO.AppendTextAsync(file, s); 但是我继续根据MSDN得到System.UnauthorizedAccessException这种情况发生在文件是readonly时(我用右键单击属性检查,它不是),如果我没有访问文件的必要权限,我该怎么办?

检测KeyRoutedEventArgs事件中是否按下了修改键

我有以下代码: public void tbSpeed_KeyDown(object sender, KeyRoutedEventArgs e) { e.Handled = !((e.Key >= 48 && e.Key = 96 && e.Key <= 105) || (e.Key == 109) || (e.Key == 189)); } 有没有办法检测是否正在按任何修改键如Shift?

MediaCapture + CaptureElement生命周期/导航管理

这是在Windows Phone 8.1商店应用程序中。 我的MainPage有一个CaptureElement来显示来自MediaCapture对象的预览流。 对于应用程序内的导航(页面之间),这很有效: MediaCapture mc; protected override async void OnNavigatedTo(NavigationEventArgs e) { mc = new MediaCapture(); await mc.InitializeAsync(); preview.Source = mc; await mc.StartPreviewAsync(); } protected override async void OnNavigatedFrom(NavigationEventArgs e) { await mc.StopPreviewAsync(); } 我可以导航到其他页面并返回,预览可靠地运行。 我遇到了以下情况的问题: 用户按下Windows按钮,然后按后退按钮 用户按下Windows按钮,然后使用任务切换器返回我的应用程序 用户按下搜索按钮,然后按下后退按钮 用户按下电源按钮,然后再次按下并向上滑动以解锁设备 用户按住后退按钮进入任务切换器,然后再次点击我的应用程序 在上述每个操作(和/或它们的组合)之后,当我的应用程序返回时,预览将冻结在显示的最后一帧。 如果用户然后导航到另一个页面然后返回到MainPage,则预览会再次开始运行而不会出现问题,因此这让我相信我只需要在从上述场景之一返回后停止/启动预览。 我尝试订阅App.Suspending和App.Resuming事件,但这些都不会在这些情况下触发。 我错过了什么?

在Windowsapp store应用中使用httpclient获取UTF-8响应

我正在构建一个Windowsapp store应用,但我坚持从API获取UTF-8响应。 这是代码: using (HttpClient client = new HttpClient()) { Uri url = new Uri(BaseUrl + “/me/lists”); HttpRequestMessage request = new HttpRequestMessage(HttpMethod.Get, url); request.Headers.Add(“Accept”, “application/json”); HttpResponseMessage response = await client.SendRequestAsync(request); response.EnsureSuccessStatusCode(); string responseString = await response.Content.ReadAsStringAsync(); response.Dispose(); } reponseString总是包含奇怪的字符,这些字符应该是é等重音符号,我尝试使用流,但是我在Windows RT中找不到某些示例中的API。 编辑:改进代码,仍然是同样的问题

WP运行时组件 – 类型加载exception?

什么工作>库设置 我有一个包含2个项目的Windows Phone 8解决方案: “Hello”,一个简单的库项目 – >生成Hello.dll 。 “HelloNativeRT”,一个带有C ++文件的WP运行时组件 – >生成HelloNativeRT.dll和HelloNativeRT.winmd 在此解决方案中,“Hello”库引用WP运行时组件,因此调用如… HelloNativeRT.SampleNamespace test = new HelloNativeRT.SampleNamespace(); …在这个图书馆项目中工作正常。 什么不起作用> WP8应用程序设置 但是, 我想在Windows Phone 8应用程序中使用这两个库 ,但不添加对项目的引用 ,因为我需要将已编译的库发送给客户端。 我在项目中引用了Hello.dll文件,以及HelloNativeRT.winmd文件。 当我以调试模式启动应用程序时,转到HelloNativeRT.SampleNamespace test = new HelloNative…行HelloNativeRT.SampleNamespace test = new HelloNative…它崩溃并说“TypeLoadException”,就像它无法加载本机模块一样。 我想我需要以某种方式包含HelloNativeRT.dll文件,因为我猜它包含本机(编译)代码,因为winmd文件可能只嵌入C ++ / CX代码。 我应该如何设置我的项目以包含此DLL? 我试图将它放在WP8项目的根目录,引用它,嵌入它……没有运气。

Async和Await与HttpWebRequest.GetResponseAsync

我正在尝试在发出Web请求时使用Async和Await,并且发现它永远不会超过await行。 我是通过Metro应用程序执行此操作,但我也在winforms应用程序中validation了该问题。 public async Task DoSomething() { string url = “http://imgur.com/gallery/VcBfl.json”; HttpWebRequest request = HttpWebRequest.CreateHttp(url); var ws = await request.GetResponseAsync(); return ws.ResponseUri.ToString(); ; } 如果我不使用await而是执行同步等待,它可以工作,但我需要它以异步方式运行。 我在这段代码中遗漏了什么导致await永不返回?

是否可以修改WinRT HttpWebRequest的User-Agent?

我正在尝试将现有应用转换为VS 11开发人员预览版中的Metro UI应用。 这意味着针对WinRT运行时运行(如果我错了,请纠正我)。 这适用于Windows 8开发人员预览版。 我需要调用REST API,这需要设置特定的用户代理。 在WInRT中似乎不可能这样。 我有以下原始代码: _request = WebRequest.CreateHttp(url); _request.UserAgent = UserAgent; 但是没有为HttpWebRequest定义UserAgent属性。 我也尝试过: _request.Headers[“User-Agent”] = UserAgent; 这会导致运行时exception: System.ArgumentException:必须使用适当的属性或方法修改此标头。 如何修改User-Agent标头?