如何在Silverlight中跨页面运行方法?

时间:2011-03-25 20:23:34

标签: silverlight datagrid routed-commands

我需要能够将边框的可见性设置为10秒钟。边框位于MainPage.xaml中,它是Content.xaml的父级。诀窍是我需要通过单击可从Content.xaml访问的ContextMenu项来更改边框的可见性,Content.xaml作为UserControl加载到MainPage.xaml中。它也应该是条件基于datagrid中的单元格值。我在Content.xaml中建立了一个方法,它应该有条件地改变MainPage.xaml中边框的可见性。由于边界不在范围内,我需要找到一种方法来连接它。

根据datagrid中单元格值的内容设置可见性的代码:

private void Delete(object sender, RoutedEventArgs e)
    {
        Packages_DataViewModel currentItem = MasterTile.SelectedItem as Packages_DataViewModel;
        if (currentItem.Status != "has content")
        {
            this.MainPageBorder.Visibility = Visibility.Visible;
        }
        else
        {
            mv.DeletePackagesItem((Packages_DataViewModel)(MasterTile.SelectedItem));
        }
    }

我还需要运行一个我在Content.xaml中使用的方法来修改MainPage.xaml中按钮的数据网格内容。任何想法都非常感谢!

更新单元格值的代码:

private void Status(object sender, RoutedEventArgs e)
    {
        Packages_DataViewModel currentItem = MasterTile.SelectedItem as Packages_DataViewModel;
        currentItem.Status = "has content";
        this.MainPageBorder.Visibility = Visibility.Collapsed;
    }

2 个答案:

答案 0 :(得分:1)

MainPage.xaml应始终是您的rootvisual。您可以通过

轻松访问该对象

以下代码:

Application.Current.RootVisual

这可以从Silverlight应用程序的任何地方访问。

答案 1 :(得分:0)

要回答您的评论,RootVisual就是您的MainPage.xaml。

要访问Content.xaml中的方法,您需要将这些方法设置为public。然后从MainPage.xaml中你可以这样调用它(通过将ucMainPage_MainContent的内容转换为Page1类型)。

((Page1)this.ucMainPage_MainContent.Content).TestMethod1();

(TestMethod1是我添加到Page1.xaml的新公共方法。)