我需要访问windows 8 metro app中usercontrols(子页面)中的主页值。请告诉我怎么做?
在子页面中,我试图访问这样的主页控件:
DealersPage main = new DealersPage();
Grid grd = main.FindName("visibleGrid") as Grid;
grd.Visibility = Visibility.Collapsed;
但没有运气!!!请告诉我
编辑:在子页面(usercontrol)上的图像点击事件我写下了代码。
private void imgClose_Tapped(object sender, TappedRoutedEventArgs e)
{
DealersPage main = this.Parent as DealersPage;
if (main != null)
{
Grid grd = main.FindName("visibleGrid") as Grid;
grd.Visibility = Visibility.Collapsed;
}
settingsControl.Visibility = Visibility.Collapsed;
}
在MainPage(DealersPage)中我的设计是这样的:
<Grid HorizontalAlignment="Left" Height="758" Margin="0,10,0,0" VerticalAlignment="Top" Width="1366" x:Name="visibleGrid" Opacity="0.85" Background="#FF858585">
<Grid HorizontalAlignment="Left" Height="600" Margin="454,108,0,0" Visibility="Collapsed" VerticalAlignment="Top" Width="500" x:Name="gridpopup">
<local:Settings x:Name="SettingsUsercontrol" Visibility="Collapsed" Height="600" Width="500"/>
</Grid>
</Grid>
答案 0 :(得分:0)
从您的代码中,您 NOT 实际访问存在用户控件的主页控件。通过使用new DealersPage()
,您实际上正在创建 DealersPage (您的主页面)的新实例,FindName
可能会返回该网格;但那永远不会是你真正想要的那个。
您的主应该是(DealersPage)this.Parent
,这将是实际的父页面。
代码:您的UserControl中的某个地方 -
DealersPage main = this.Parent as DealersPage;
if(main != null)
{
Grid grd = main.FindName("visibleGrid") as Grid;
grd.Visibility = Visibility.Collapsed;
}