如何从另一个类分配 RootVisual

Posted

技术标签:

【中文标题】如何从另一个类分配 RootVisual【英文标题】:How to assign RootVisual from another class 【发布时间】:2014-03-25 11:04:46 【问题描述】:

silverlight 中,我试图从另一个类分配RootVisual 对象。

这样做的原因是 javascript 将执行一些 Ajax 查询,并且需要随时动态更改 UI element

这是我到目前为止所做的,它似乎不起作用。

public class MyClass


    private UIElement _rootVisual;

    public MyClass(UIElement root)
    
        _rootVisual = root;
    

    public bool SetVisual(int id)
    

        switch(id) 
           case 0: 
               this._rootVisual = new MyUI1();
               break;
           default: 
               this._rootVisual = new MyUI2();
               break;
        

        return true;
    

这是我的 App.xaml.cs

    private void Application_Startup(object sender, StartupEventArgs e)
    

        // Create A Scriptable object
        this.myclass= new MyClass( this.RootVisual );


        // Register Scriptable for JS Interop 
        htmlPage.RegisterScriptableObject("jsMyClass", myclass);



        //Load the initial UI but should be able to access/change later via JS
        myclass.LoadScene(0);


    




这里是调用 Scriptable myClas 的 JS

function _test()

     slControl = document.getElementById("SilverlightControl");

     slControl.Content.jsMyClass.SetVisual(1);

【问题讨论】:

【参考方案1】:

我这样做的方法是保持根视觉相同,但更改其中的内容。

所以在你的 App.cs 文件中你这样做

            //Setup a root content user control so we can swap out the content depending on what we want to show
        UserControl RootContent = new UserControl();
        RootContent.HorizontalAlignment = HorizontalAlignment.Stretch;
        RootContent.VerticalAlignment = VerticalAlignment.Stretch;
        DispatcherHelper.Initialize();
        this.RootVisual = RootContent;
        (this.RootVisual as UserControl).Content = new SplashScreenView();

然后当你想切换到不同的视图时,你可以这样做

(App.Current.RootVisual as UserControl).Content = new Views.PreQualView();

【讨论】:

感谢您发布此信息。我也想通了,但没有时间更新我的问题。我现在试图实现从一个场景到另一个场景的过渡,但我猜那是另一个问题。再次感谢

以上是关于如何从另一个类分配 RootVisual的主要内容,如果未能解决你的问题,请参考以下文章

调用从另一个类传递的回调

如何从另一个表中获取每个值的计数?

如何从另一个类调用方法函数?

如何从另一个类调用@selector 方法

如何从另一个类调用 QMainWindow 组件?

我正在尝试从另一个对象列表分配和输出到控制台字符串列表。但它继续重复字符串