none
Silverlight中如何注册多个按钮事件? RRS feed

  • 问题

  • 我目前使用Blend2试用版,做一个Silverlight站点,

    在Page.xaml.js中使用

    this.control.content.findName("rectangle2").addEventListener

    当我给第二个按钮添加事件,程序无法运行。

     

    我添加了两个图形,分别命名为:rectangle1和rectangle2

    另外添加了一个WMV视频命名为:sctv40518_wmv

    想通过一个按钮使其开始播放,另一个按钮使其暂停,但不能成功。

    但只要去掉下面有下划线部分的代码,就可以正常运行。请高手帮我看看。

    Code Snippet

     

    if (!window.test3)
     test3 = {};

    test3.Page = function()
    {
    }

    var varplay = 0;

    test3.Page.prototype =
    {
     handleLoad: function(control, userContext, rootElement)
     {
      this.control = control;
      
      // 示例事件连接器: 
      //rootElement.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handlePlay));
      //rootElement.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handlePause));
      this.control.content.findName("rectangle1").addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handlePlay));
      this.control.content.findName("rectangle2").addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handlePause));
     }
     
     // 示例事件处理程序
     handlePlay: function(sender, eventArgs)
     {
      // 下面一行代码说明如何按名称查找元素并对其调用方法。
      // this.control.content.findName("Storyboard1").Begin();
      if(varplay==0){
       this.control.content.findName("sctv40518_wmv").play();
       varplay=1;
      }
      else
      {
       this.control.content.findName("sctv40518_wmv").pause();
       varplay=0;
      }
     }
     handlePause: function(sender, eventArgs)
     {
      this.control.content.findName("sctv40518_wmv").pause();
      varplay=0;
     }

    }

     

     

    2008年9月30日 19:52

答案

  •  

    问题解决!

    主要在于,每一个功能函数之后花括号}号码必须有一个英文逗号,最后一个函数除外。

    正确代码如下:

    Code Snippet

    if (!window.test3)
     test3 = {};

    test3.Page = function()
    {
    }

    var varplay = 0;

    test3.Page.prototype =
    {
     handleLoad: function(control, userContext, rootElement)
     {
      this.control = control;
      
      // 示例事件连接器: 
      //rootElement.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handlePlay));
      //rootElement.addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handlePause));
      this.control.content.findName("canvas1").addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handlePlay));
      this.control.content.findName("canvas2").addEventListener("MouseLeftButtonDown", Silverlight.createDelegate(this, this.handlePause));
     },
     
     // 示例事件处理程序
     handlePlay: function(sender, eventArgs)
     {
      // 下面一行代码说明如何按名称查找元素并对其调用方法。
      // this.control.content.findName("Storyboard1").Begin();
      if(varplay==0){
       this.control.content.findName("sctv40518_wmv").play();
       varplay=1;
      }
      else
      {
       this.control.content.findName("sctv40518_wmv").pause();
       varplay=0;
      }
     },
     handlePause: function(sender, eventArgs)
     {
      this.control.content.findName("sctv40518_wmv").pause();
      varplay=0;
     }

    }

     

     

     

    2008年10月3日 11:19