Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从另一个Windows Phone页面访问公共方法_C#_Silverlight_Windows Phone - Fatal编程技术网

C# 如何从另一个Windows Phone页面访问公共方法

C# 如何从另一个Windows Phone页面访问公共方法,c#,silverlight,windows-phone,C#,Silverlight,Windows Phone,是否有较短的方法从其他windows phone页面(例如从MainPage.xaml)访问公共方法 ((MainPage)(((System.Windows.Controls.ContentControl)(App.RootFrame)).Content)).getMyPublicMethod() 据我所知,这是唯一的办法。但是您可以创建一个包装器来缩短访问该页面的语法。例如,方法包装器: public MainPage getMainPage() { return (MainPag

是否有较短的方法从其他windows phone页面(例如从
MainPage.xaml
)访问公共方法

((MainPage)(((System.Windows.Controls.ContentControl)(App.RootFrame)).Content)).getMyPublicMethod()

据我所知,这是唯一的办法。但是您可以创建一个包装器来缩短访问该页面的语法。例如,方法包装器:

public MainPage getMainPage()
{
    return (MainPage)(((System.Windows.Controls.ContentControl)(App.RootFrame)).Content);
}

//usage :
getMainPage().getMyPublicMethod();
public MainPage OtherWindow
{
    return (MainPage)(((System.Windows.Controls.ContentControl)(App.RootFrame)).Content);
}

//usage :
OtherWindow.getMyPublicMethod();
或属性包装器:

public MainPage getMainPage()
{
    return (MainPage)(((System.Windows.Controls.ContentControl)(App.RootFrame)).Content);
}

//usage :
getMainPage().getMyPublicMethod();
public MainPage OtherWindow
{
    return (MainPage)(((System.Windows.Controls.ContentControl)(App.RootFrame)).Content);
}

//usage :
OtherWindow.getMyPublicMethod();

如果您以现在的方式实施它,您的关注点分离将非常糟糕。通常情况下,视图(在本例中称为
页面
)不应包含任何触发其他视图中可能需要的操作的功能组件

一个更好的解决方案是使用“轻”方法,在这种方法中,您有一个核心视图模型,然后简单地从中调用操作,将必要的数据从一个视图传递到另一个视图。我已经描述了一个基本的实现