Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以从JavaScript显示/隐藏Silverlight XAP文件中的用户控件?_Silverlight - Fatal编程技术网

是否可以从JavaScript显示/隐藏Silverlight XAP文件中的用户控件?

是否可以从JavaScript显示/隐藏Silverlight XAP文件中的用户控件?,silverlight,Silverlight,我创建了一个Silverlight项目,它生成[something].xap文件来打包一些Silverlight用户控件。我希望通过在浏览器中使用javascript来操纵该.xap文件,根据java脚本事件显示和隐藏用户控件 有可能这样做吗 如果有,请提供任何样品或文件链接 提前谢谢 凯文这是我收集的关于这个主题的链接 这是我的解决方案…不确定这是否是“最佳实践”方式…评论 在Silverlight应用程序中的App类中,我有以下代码: private Page _page =

我创建了一个Silverlight项目,它生成[something].xap文件来打包一些Silverlight用户控件。我希望通过在浏览器中使用javascript来操纵该.xap文件,根据java脚本事件显示和隐藏用户控件

有可能这样做吗

如果有,请提供任何样品或文件链接

提前谢谢


凯文

这是我收集的关于这个主题的链接


    • 这是我的解决方案…不确定这是否是“最佳实践”方式…评论

      在Silverlight应用程序中的App类中,我有以下代码:

          private Page _page = null;
          private void Application_Startup(object sender, StartupEventArgs e)
          {
              _page = new Page();
              this.RootVisual = _page;
      
              HtmlPage.RegisterScriptableObject("App", this);
          }
      
      我还向App类添加了一个要从JavaScript调用的[ScriptableMember]

          [ScriptableMember]
          public void ShowTeamSearch(Guid ctxId, Guid teamId)
          {
              _page.ShowTeamSearcher(ctxId, teamId);
          }
      
      Page类是在Silverlight控件项目中创建的默认get类,它实际上没有任何UI或逻辑,只是用于交换视图

          Login oLogin;
          TeamSearcher oSearcher;
      
          public Page()
          {
              InitializeComponent();
              oLogin = new Login();
              oSearcher = new TeamSearcher();
      
              oLogin.Visibility = Visibility;
              this.LayoutRoot.Children.Add(oLogin);
          }
      
      此外,还添加了一种显示/隐藏视图的方法……这可能会/可能会在动画等方面变得更高级/更健壮……但这显示了基本思想:

          public void ShowTeamSearcher(Guid ctxId, Guid teamId)
          {
              oSearcher.UserTeamId = teamId;
              oSearcher.UserContextId = ctxId;
      
              LayoutRoot.Children.Remove(oLogin);
              LayoutRoot.Children.Add(oSearcher);
          }
      
      然后在将oXaml的id分配给silverlight主机的实例之后,在JavaScript中调用它

          var slControl = document.getElementById('oXaml');
          slControl.Content.App.ShowTeamSearch(sessionId, teamId);   
      

      这似乎很有效,也不是一个很糟糕的解决方案,但可能会有更好的解决方案……想法?

      谢谢Arron,但除非我错过了,否则提供的文档主要集中在SL和Javascript之间的互操作上……我感兴趣的是,一旦我回到托管世界,我如何获得一个用户控件并将其隐藏,然后展示一个不同的。分配给RootVisual属性无效。