2012-04-22 5 views
0

Хорошо, это проблема. У меня есть базовый веб-сайт с кнопками. эти кнопки запускаются через javascript, а затем код переходит на C#, а затем он выполняет различные действия с помощью элемента управления gantt Silverlight.Полный экран Silverlight через javascript

Например, если я хочу, чтобы увеличить масштаб управления Ганта я хожу так:

<button id="zoomIn" onclick="SlZoomIn()">Zoom In</button> 

затем в JavaScript:

function SlZoomIn() { 
    var control = document.getElementById("SilverlightPlugIn"); 
    control.Content.SilverPlan.JsZoomIn(); 
} 

затем в C#:

[ScriptableMember] 
     public void JsZoomIn() 
     { 

      try 
      { 
       gantt.ZoomBySteps(1); 
      } 
      catch (Exception e) 
      { 
       MessageBox.Show("Zoom In does not work."); 
      } 
     } 

Этот все работает нормально, но когда я хочу делать что-то с gantt, требующим событий, это проблема. Например, если я хочу печатать или полноэкранный режим управления gantt. Как я могу это сделать?

В C# код для этого:

private void fullScreen(object sender, RoutedEventArgs e) 
     { 
      Application.Current.Host.Content.IsFullScreen = !Application.Current.Host.Content.IsFullScreen; 
     } 

Но что я должен сделать в JavaScript, чтобы вызвать этот метод? когда пользователь нажимает кнопку в полноэкранном режиме?

ответ

0

Невозможно было бы назвать этот код из JavaScript по сравнению с предыдущим примером, за исключением того, что подключаемый модуль Silverlight накладывает ограничения безопасности для нескольких вещей, включая полноэкранный режим, диалоги печати и файлов. Это означает, что эти действия должны быть инициированы щелчком пользователя или ввода чего-либо. Разъясняется here at MSDN.

Поэтому вы не можете сделать это из JavaScript, даже если пользователь нажимает кнопку вне плагина Silverlight - пользователю нужно щелкнуть что-то внутри плагина Silverlight, например кнопку, которая вызывает событие, которое вы обрабатываете в своем C#, и выполните действие непосредственно.

В случае полноэкранного просмотра вы обнаружите, что вы смешиваете содержимое HTML/JavaScript с Silverlight, что полноэкранный режим Silverlight, скорее всего, совсем не делает то, что вы хотите - контент Silverlight будет полноэкранным, и содержимое HTML не будет видно. Вы также не можете использовать ввод с клавиатуры (в основном). Я бы рекомендовал изменить размер объекта Silverlight на странице HTML (возможно, в сочетании с максимизацией окна браузера).

+0

спасибо за ан. Я знаю, что полноэкранный html невозможно. Здесь не проблема, потому что это просто демо. Он будет интегрирован где-то еще в будущем. Как насчет «Печать» или «Экспорт» (диалоговое окно «Сохранить файл»). Можно ли это сделать так, или это нужно сделать в компоненте Silverlight? Я знаю, что есть некоторые ограничения безопасности, но не больно спрашивать, если вы понимаете, что я имею в виду :) – Some1

+1

Опять для диалога сохранения файла, будет применяться то же ограничение. Для печати и открытия файлов вы можете сделать это с JavaScript до некоторой степени (как если бы вы вообще не использовали SL, а передавали данные на SL), но с довольно большой работой и не таким большим результатом. И я не уверен, что в любом случае можно сохранить файлы из JS. –

+0

ОК спасибо! Я надену кнопки на элемент управления SL, и все будет хорошо. – Some1

Смежные вопросы