标签: windows-runtime

WebView InvokeScript HRESULT 0x80020101

我正在尝试在WebView中调用一个函数.我需要调用的一些目标函数是:

play: function()
{
    if (this.value < this.p.max)
    {
        this.inc();
        this.timer = new it_timer({ object: this, method: "play", timeout: 200 });
    }
    else
        this.stop();
},
stop: function()
{
    if (this.timer)
        this.timer.stop();
    this.playing = false;
    this.playbutton.style.backgroundPosition = "0 0";
}
Run Code Online (Sandbox Code Playgroud)

我开始打电话

webView.InvokeScript("play", new string[0]);
Run Code Online (Sandbox Code Playgroud)

但这没用,HRESULT:0x80020101.我在这个主题上找到了这个http://support.microsoft.com/kb/247784,但它根本没有帮助我.

然后我尝试在多个站点上做我发现的示例:

webView.InvokeScript("eval", new string[] { "document.documentElement.outerHTML;");
Run Code Online (Sandbox Code Playgroud)

webView.InvokeScript("alert", new string[] {"message"});
Run Code Online (Sandbox Code Playgroud)

但是这两个都没有用,给出了相同的HRESULT代码.WebView正常呈现,javascript在页面上正常工作.

我很感激在确定问题/寻找解决方案方面提供帮助.

编辑:似乎"警告",所有在类中声明的方法都不起作用.在早期的.NET版本中似乎有一个InvokeMethod(..),WinRT还有其他选择吗?

c# webview invokescript windows-runtime

13
推荐指数
1
解决办法
1万
查看次数

Windows运行时方法不能通用 - 原因,解决方法,替代方案?

这是一个接口,取决于我尝试将我维护的事件聚合器MemBus移植到Windows运行时世界:

public interface ISubscriber
{
    IDisposable Subscribe<M>(Action<M> subscription);

    #if WINRT 
    [Windows.Foundation.Metadata.DefaultOverload]
    #endif
    IDisposable Subscribe(object subscriber);

    IObservable<M> Observe<M>();
}
Run Code Online (Sandbox Code Playgroud)

我得到的是编译器错误:

"错误WME1031:' MemBus.ISubscriber.Subscribe<M>(System.Action<M>)'是一种通用方法.Windows运行时方法不能通用."

我只怀疑为什么会这样,如果有人可以澄清,请做.

我的主要问题是:在将代码移植到Windows运行时时,我们应该如何处理这个问题

泛型有很多更高级别的功能.实际上,我们在Windows运行时使用泛型类(例如List<T>).RT组件应该如何公开泛型类型,如果不是,它是唯一可用的方法,可以回到编写.NET 1.1代码的方式,即对象输入,对象输出和执行转换?

c# windows-runtime windows-store

13
推荐指数
2
解决办法
2067
查看次数

未处理未处理的异常处理程序的Metro/WinRT UI异步void事件处理程序

请考虑以下内容从Windows 8 Metro/WinRT应用程序中提取,这些应用程序已经减少到显示异常所需的最低要求:

public class App : Application
{
    public App()
    {
        UnhandledException += (sender, e) => e.Handled = true;
    }
}

public class MainPage : Page
{
    private void Button_Click_1(object sender, RoutedEventArgs e)
    {
        throw new NotSupportedException();
    }

    private async void Button_Click_2(object sender, RoutedEventArgs e)
    {
        throw new NotSupportedException();
    }
}
Run Code Online (Sandbox Code Playgroud)

因此,给定具有两个按钮及其单击事件处理程序的Metro UI,唯一的区别是第二个事件处理程序被标记为async.

然后单击每个按钮,我希望在两种情况下都能调用UnhandledException处理程序,因为它们(应该)都是通过UI线程和相关的同步上下文输入的.我的理解是,对于async void方法,应该通过初始同步上下文捕获和"重新抛出"(保留原始堆栈跟踪)的任何异常,这也在Async/Await FAQ中明确说明.

但是在这种情况下调用UnhandledException处理程序async,因此应用程序崩溃了!由于这会挑战我认为非常直观的模型,我需要知道原因!是的,我知道我可以将处理程序的主体包装在一个try { } catch { },但我的问题是为什么不调用逆止器UnhandledException处理程序?

为了进一步强调为什么这没有意义,请考虑以下几乎相同的WPF应用程序摘录,同时使用async/await并以.NET Framework 4.5为目标: …

async-await c#-5.0 microsoft-metro windows-8 windows-runtime

13
推荐指数
2
解决办法
8634
查看次数

使用HTML/CSS/JS和XAML/C#编写的Metro应用程序之间的区别

用Web开发技术编写的Metro应用程序和用XAML/C#编写的应用程序有什么区别?Microsoft Metro API是否为Javascript提供了挂钩,它是C#的原生内容?他们应该携手合作,还是开发商选择走哪条路?

如果使用JS(OpenGL硬件功能除外),是否存在某些无法实现的功能?

我想知道的原因是要知道哪些技术是构建大量Metro应用程序所必需的,所以当我到达某一点时,我不会被一堵砖墙挡住,让我知道我使用了错误的技术.

microsoft-metro windows-8 windows-runtime winjs winrt-xaml

13
推荐指数
1
解决办法
6178
查看次数

Windows Phone 8:媒体文件访问

是否有办法从Windows Phone 8中的默认音频/视频文件夹访问音频和视频文件?我已经检查了这个文档但是WP8上没有实现所有方法(例如KnownFolders.MusicLibrary):http://msdn.microsoft.com/en-us/library/windows/apps/hh967755.aspx

我需要访问原始文件数据.如果从C#无法访问来自Windows Phone Runtime或纯C++的数据也可以.

c# c++ file-io windows-runtime windows-phone-8

13
推荐指数
2
解决办法
2万
查看次数

如何在注册后立即启动Windows应用后台任务?

我正在编写一个只能在PC上运行的Metro应用程序(因此没有,或者至少不会担心电池寿命).当用户单击按钮时,我需要它来注册并运行后台任务.它注册很好,但我发现没有办法使它比15分钟的延迟更快运行,这对这个应用程序来说是无用的.任何想法我怎么能让它立即运行?

此外,我在这里发现了一个类似的问题,说它不可能,但有人必须想出办法.

编辑:

我要求这项任务的理由如下:

我的应用程序将在很长一段时间内出现读取和写入文件,时间从几分钟到几个小时不等.在大部分时间内,应用程序不太可能在前台呈现.因为我需要代码能够继续执行,所以最好的方法是创建后台任务,但我找不到在Visual Studio之外手动启动此任务的方法,尽管在Visual Studio中它可以完美地工作.如果有更合适的方法来处理此执行,我愿意使用它.

c#-5.0 windows-8 windows-runtime .net-4.5 windows-store-apps

13
推荐指数
2
解决办法
5911
查看次数

图像源和缓存

我使用以下代码显示来自网络服务器的图像:

   <Image Source="{Binding Url}" />
Run Code Online (Sandbox Code Playgroud)

图像会自动下载,我假设还有一些基于Url的缓存.

我的问题是,当应用程序处于脱机状态时,可能无法显示缓存的图像.

有没有办法改变缓存行为,以便在没有网络可用时加载图像?有关缓存的文档指针也非常有用.

c# windows-phone windows-runtime windows-phone-8

13
推荐指数
2
解决办法
2万
查看次数

GridView有2列,填充宽度

我想要实现的结果非常简单,列表有2列,宽度相等.在Windows电话7/8这可以很容易地使用来实现ListBoxWrapPanel作为ItemsPanel和设定ItemWidth到240(如屏幕宽度为480).

现在我正在编写一个通用应用程序,但问题是屏幕不能保证宽度为480(看起来甚至不是电话)所以我无法设置ItemWidth我希望它填充宽度的屏幕.使用以下方法,我已经能够达到几乎所需的效果XAML:

<GridView ItemsSource="{Binding Results}" Margin="12">
    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Image Source="{Binding SampleImage}" />
            </Grid>
        </DataTemplate>
    </GridView.ItemTemplate>

    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <WrapGrid MaximumRowsOrColumns="2" Orientation="Horizontal" HorizontalChildrenAlignment="Stretch" VerticalChildrenAlignment="Stretch">
            </WrapGrid>
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
</GridView>
Run Code Online (Sandbox Code Playgroud)

这给出了以下结果: 在此输入图像描述

正如所看到的它成功地给出2列具有相等宽度,但GridGridView.ItemTemlate没有填满每列的整个宽度.我已经尝试过设置HorizontalAlignment="Stretch"GridGridView它本身没有任何成功.任何人都知道这样做吗?

xaml gridview windows-runtime windows-phone-8.1

13
推荐指数
3
解决办法
3万
查看次数

Windows Phone 8.1(WinRT):自定义循环选择器

我想为我的Windows Phone 8.1(WinRT)定制一个循环选择器,目前我找不到任何解决方案.我想要这样的东西:

在此输入图像描述

Windows Phone的工具包是WP8.0和WP8.1 Silverlight和它不为WP8.1(WinRT的)应用程序的工作(而且这个问题是WP8.1的Silverlight).

WP8.1 有DatePicker和TimePicker控件.有没有办法自定义他们的数据或某些东西来控制我的问题?

有一个LoopingSelector类,但它似乎尚未实现.

任何解决方案或想法将不胜感激.

c# xaml windows-runtime loopingselector windows-phone-8.1

13
推荐指数
1
解决办法
1335
查看次数

下拉以在Windows Phone 8.1中刷新


我想在我的WP8.1(运行时)应用程序中实现下拉到刷新功能.我试图找到这个WP版本的解决方案,但正如我所看到的,这个功能适用于旧版本的WP.
我有一个ListView,我想使用它.使用ScrollViewer,我可以检测到用户何时到达列表的末尾,但是例如VerticalOffset值不能是负数,因此我无法检测到下拉手势.
任何人都可以知道如何为我的应用程序实现此功能?

c# listview windows-runtime pull-to-refresh windows-phone-8.1

13
推荐指数
1
解决办法
4497
查看次数