Настройка фокуса на приложение silverlight 4 в представлении MVC 3 - PullRequest
0 голосов
/ 14 сентября 2011

У меня проблемы с этим. Хотя это просто означает, что люди должны нажимать на объект, чтобы заставить его реагировать, я думаю, что это выглядит непрофессионально, как ад.

Вот вид (включая мою n-ю попытку):

@{
    ViewBag.Title = "Show";
    //Layout = "~/Views/Shared/_Empty.cshtml";
    Layout = "";

}

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/modernizr-1.7.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.alerts.js")" type="text/javascript"></script>

<script type="text/javascript">
    $(document).ready(function () {
        $('#HDViewerSL').focus();
    });
</script>

<div id="silverlightControlHost" >
    <object  id='HDViewerSL' data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%">
        <param name="minRuntimeVersion" value="4.0.60310.0"/>
        <param name="autoUpgrade" value="true"/>
        <param name="source" value="@ViewBag.HDViewSLXap"/>
        <param name="background" value="black"/>
        <param name="initParams" value="source=@ViewBag.ImagesUrl,id=@ViewBag.Id"/>

        <div style="text-align:center;font-family:Arial;margin-top:50px;">
        This page requires Silverlight 4.<br />
        <br />
        <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>
        </div>
    </object>
    <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
</div>

В моем конструкторе Silverlight у меня есть:

this.GotFocus += new RoutedEventHandler(HDViewer_GotFocus);

Это событие никогда не запускается.

Кто-нибудь знает, как установить фокус на объекте?

Спасибо, David

Ответы [ 2 ]

0 голосов
/ 15 сентября 2011

Я получал «Исключение недопустимой операции» с этим кодом, но он был в конструкторе. По вашему предложению @Avee я поместил его в конструктор, а не в событие загрузки, и изменений не было. Проблема была в том, что мне нужно было добавить:

 <param name="enablehtmlaccess" value="true"/> 

к параметрам объекта Silverlight на странице хостинга. (ссылка: http://weblogs.asp.net/albertpascual/archive/2009/04/13/silverlight-exception-the-dom-scripting-bridge-is-disabled.aspx)

Спасибо! David

0 голосов
/ 14 сентября 2011

Вы можете запросить фокусирование плагина из приложения Silverlight, используя HtmlPage.Plugin.Focus(); Событие Loaded главной страницы обычно является подходящим местом для этого.

...