2

写真を撮るためにウェブカメラと通信するSilverlightアプリがあります。

Silverlight コード

protected void photoButton_Click(object sender, RoutedEventArgs e)
{
    this.src.CaptureImageCompleted += (s, a) =>
    {
        this.lastSnapshot = a.Result;
        this.snapshot.Visibility = Visibility.Visible;
        this.snapshot.Source = this.lastSnapshot;
        HtmlPage.Window.Invoke("SalvaFoto");                
        this.src.Stop();
    };

    src.CaptureImageAsync();
}

ASPX Silverlight アプリケーションを呼び出す場所

            var htmlEmbedSilverlight = "<div id='silverlightControlHost'> "
                    + "<object data='data:application/x-silverlight-2,' type='application/x-silverlight-2' width='550px' height='250px'> "
                    + "<param name='source' value='../../ClientBin/FotoEmprestimoChave.xap'/> "
                    + "<param name='onError' value='onSilverlightError' /> "
                    + "<param name='background' value='white' /> "
                    + "<param name='minRuntimeVersion' value='4.0.60310.0' /> "
                    + "<param name='autoUpgrade' value='true' /> "
                    + "<param name='InitParams' value='chave_id=" + data + "' /> "
                    + "<a href='http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.60310.0' style='text-decoration:none'> "
                    + "<img src='http://go.microsoft.com/fwlink/?LinkId=161376' alt='Get Microsoft Silverlight' style='border-style:none'/> "
                    + "</a> "
                    + "</object><iframe id='_sl_historyFrame' style='visibility:hidden;height:0px;width:0px;border:0px'></iframe></div>";
            $("#tiraFotoSilverlight").html(htmlEmbedSilverlight);

問題

Javascript現在のASPXページで実行しようとすると、HtmlPage.Windows.Invoke("javascript_method");機能しません。

私は何か間違っていますか?

次のコードも試しましたが、成功しませんでした

protected void photoButton_Click(object sender, RoutedEventArgs e)
{
    this.src.CaptureImageCompleted += (s, a) =>
    {
        this.lastSnapshot = a.Result;
        this.snapshot.Visibility = Visibility.Visible;
        this.snapshot.Source = this.lastSnapshot;

        HtmlElement Script = HtmlPage.Document.CreateElement("script");
        Script.SetAttribute("type", "text/javascript");
        Script.SetProperty("text", "$(document).ready(function () { alert('hi'); });");

        this.src.Stop();
    };

    src.CaptureImageAsync();
}
4

1 に答える 1

0

私は新しいSilverlight/Javascriptですが、これを行ったところで、Dispatcher.BeginInvokeを使用する必要がありました。

Dispatcher.BeginInvoke(() =>
    {
        HtmlPage.Window.Invoke("SalvaFoto");
    });
于 2012-11-14T14:32:43.690 に答える