Silverlight 3.0 - 如何从UserControl访问MainPage控件值

时间:2009-11-13 12:17:29

标签: c# silverlight

我需要从MainPage中检索一些控件值到UserControl。 在这个UserControl中,我需要能够获得Frame.ActualWidth& Frame.ActualHeight值(在这种情况下,Frame元素在MainPage中,UserControl通过xaml加载到MainPage的Grid中)。 有人有样品吗? 谢谢

Josimari Martarelli ESLSistemasLogísticos Silverlight UI设计

jmartarelli@logfacil.com.br

4 个答案:

答案 0 :(得分:7)

MainPage m =(MainPage)Application.Current.RootVisual;

答案 1 :(得分:1)

在这样的实例中,我经常会使用我的MainPage类对其自身进行公共静态引用,Instance。我将它在构造函数中设置为“this”,然后当我需要从用户控件中向下访问MainPage时,我只需要调用类似的东西:

MainPage.Instance。

答案 2 :(得分:1)

首先,我在App类中创建了一个静态方法,该方法遍历父项的层次结构,直到找到基于名称的匹配项。这不仅可以用于MainPage。层次结构中的所有内容都应该从FrameworkElement类派生。

    public static FrameworkElement GetParentByName(FrameworkElement currentPage, 
string ParentName)
    {

        FrameworkElement fe = (FrameworkElement)currentPage.Parent;

        // Walk your way up the chain of Parents until we get a match
        while(fe.GetType().Name != ParentName)
            fe = (FrameworkElement)fe.Parent;

        return fe;

    }

然后使用它我只需要调用类似的东西:

MainPage m =(MainPage)App.GetParentByName(this,“MainPage”);

答案 3 :(得分:0)

如果您使用的是登录页面,则必须使用登录页面进行投射。

Login lp = (Login)Application.Current.RootVisual;
您可以使用在登录页面中创建的参数。