您的位置:知识库 » .NET技术

在两个Silverlight应用间应用间数据通信DEMO(包括与Flash通信)

作者: 代震军  来源: 博客园  发布时间: 2008-10-20 13:37  阅读: 8585 次  推荐: 0   原文链接   [收藏]  

有了数据和数据结构,我们可以在应用程序中给列表控件绑定数据源了,如下:

//这里必须声明是public,否则js调用该方法时会报错
[ScriptableMember]
public void LoadData(int count)
{
    
//加载指定数据的雇员信息
    EmployeeList.ItemsSource = new EmployeeManager().GetEmployeeList(count);
}

当然DEMO中所提供的功能里有“选取某一行雇员信息”的操作,其实现方法如下:

/// <summary>
/// 单击编辑雇员列表信息事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
void EmployeeList_BeginningEdit(object sender, DataGridBeginningEditEventArgs e)
{
    
//当有要编辑的信息时
    if (EmployeeList.SelectedItem != null)
    {
        EmployeeInfo employeeInfo 
= EmployeeList.SelectedItem as EmployeeInfo;
        
//执行选中信息事件操作(最终会执行js所绑定的function代码)
        javaScriptableObject.OnSelectEmployeeInfo(employeeInfo);
    }
}

     大家请注意上面的这一行代码:    

javaScriptableObject.OnSelectEmployeeInfo(employeeInfo);

其完成的就是对HTML页面上JS绑定事件的调用,其JS绑写事件代码如下:

//初始化操作
function Init(obj) {
    
//绑定js函数到silverlight的事件处理器
    $get("Xaml1").content.EmployeeObject.SelectEmployeeInfo =
ShowSelectEmployeeInfo;
   
}

当然,上面还有一个内容没有说明,即EmployeeObject对象是从哪来的,其实它就是我们公布到HTML中让  JS可以访问的对象JavaScriptableObject的实例,如下:

JavaScriptableObject javaScriptableObject;
void Page_Loaded(object sender, RoutedEventArgs e)
{
    javaScriptableObject 
= new JavaScriptableObject();
    
//注册js可用的类型(详情见Silverlight_JS_callTestPage.aspx中的js代码)
    HtmlPage.RegisterScriptableObject("EmployeeObject", javaScriptableObject);
   
}

而JS方法"ShowSelectEmployeeInfo"即是实现对Silverlight 2应用中“暴露”方法的调用。其内容如下:

//显示选取的雇员信息
function ShowSelectEmployeeInfo(sender, args) {
    $get(
"Xaml2").content.Page.LoadDetailData(parseInt(args.employeeInfo.
EmployeeNo),
                                              args.employeeInfo.EmployeeName,
                                              args.employeeInfo.Address);
}

而Silverlight 2应用中的LoadDetailData方法所实现的就是将选中的单个雇员信息进行显示,如下:

//这里必须声明是public,否则js调用该方法时会报错
[ScriptableMember]
public void LoadDetailData(int employeeNo, string employeeName, string address)
{
    
//加载指定数据的雇员信息
    EmployeeNo.Text = employeeNo.ToString();
    EmployeeName.Text 
= employeeName;
    Address.Text 
= address;
}

 

0
0
标签:Silverlight

.NET技术热门文章

    .NET技术最新文章

      最新新闻

        热门新闻