我需要从MainPage中检索一些控件值到UserControl。 在这个UserControl中,我需要能够获得Frame.ActualWidth& Frame.ActualHeight值(在这种情况下,Frame元素在MainPage中,UserControl通过xaml加载到MainPage的Grid中)。 有人有样品吗? 谢谢
Josimari Martarelli ESLSistemasLogísticos Silverlight UI设计
答案 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;
您可以使用在登录页面中创建的参数。