2009-11-05 19 views
0

好奇如何做到這一點。有什麼辦法可以在控件所在的Asp.net頁面中使用的Silverlight控件中創建委託方法?是否可以通過可以在asp.net頁面中使用的Silverlight控件啓動事件?

例如,假設您正在創建一個從用戶(即名稱,年齡等)請求信息的Silverlight控件,是否有辦法以某種方式綁定到來自asp的Silverlight控件上的單擊事件。它正在坐的網頁,然後從該Silverlight控件獲取信息?

回答

1

可以做你想問的事情,但它與ASP.Net沒有多大關係。由於Silverlight在客戶端上運行,因此您只需在Silverlight中單擊事件即可更新html內容。您可以在回發時將該數據發送回ASP.Net。

除非你有充分的理由這樣做,否則它可能不是最好的方法。您可能會更好地使用Web服務將數據發送回網絡服務器,而不是通過ASP.Net。

+0

好點(縣)。我只是想,如果我的控件將來可以通過它所在的頁面「可重用」,但現在我想到了,觸發asp.net頁面上的某些內容的唯一方法是HTML更新或Javascript觸發。 最好讓控件作爲一個獨立的應用程序。 – 2009-11-05 01:06:51

1

我做了註冊Javascript事件並手動回撥我的服務器控件。

<asp:Silverlight runat="server" ID="SilverlightUpload" 
    Source="~/ClientBin/Silverlight.xap" OnPluginLoaded="pluginLoaded" /> 
<asp:Button runat="server" OnClientClick="return cancelUpload()" Text="Cancel" /> 

<script type="text/javascript"> 

    var uploadControl = null; 
    function pluginLoaded(sender) { 
     uploadControl = sender.get_element().content.uploadControl; 
     uploadControl.addEventListener("OnFileListChanged", onFileListChanged); 
    } 

    function onFileListChanged(sender, e) { 
     var files = []; 
     for (var i = 0; i < e.Files.length; i++) { 
      files[i] = { 
       Id  : e.Files[i].Id, 
       Name : e.Files[i].Name 
      }; 
     } 
     __doPostBack("<%= RadGrid1.UniqueID %>", 
        "OnFileListChanged:" + JSON.stringify(files)); 
    } 

    function cancelUpload() { 
     $find("<%= SilverlightUpload.ClientID %>") 
      .get_element().content.uploadControl.StopUpload(); 
     return false; 
    } 

</script> 

和Silverlight代碼隱藏:下面的一些重要棋子

[ScriptableType] // MUST 
public partial class Page : UserControl 
{ 
    [ScriptableMember] // MUST 
    public event EventHandler<FileListChangedEventArgs> OnFileListChanged; 

    [ScriptableMember] // MUST 
    public void StopUpload() { } 
} 

[ScriptableType] 
public class FileListChangedEventArgs : EventArgs 
{ 
    public FileUploadItem[] Files { get; internal set; } 
} 

[DataContract] 
[ScriptableType] 
public class FileUploadItem 
{ 
} 
+0

非常酷,我要試試這個。 – 2009-11-05 01:08:05

相關問題