0

我以为我可以通过使用从同一命名空间中的任何非 ui 类访问主页上的控件

            var frame = Application.Current.RootVisual as PhoneApplicationFrame;
            var startPage = frame.Content as PhoneApplicationPage; 

但是智能感知并没有显示出任何控制。

在谷歌上没有发现任何奇怪的东西。

4

1 回答 1

4

如果您想从另一个类访问您的控件,您可以:

  • 使用FindName方法来检索它:

    var myButton = (Button)startPage.FindName("myButton");
    
  • 使用公共属性公开控件,并将页面转换为其强类型而不是PhoneApplicationPage

    在 ManPage.xaml.cs 中:

    public Button MyButton
    {
        get
        {
            return this.myButton;
        }
    }
    

    在你的另一堂课上:

    var frame = (PhoneApplicationFrame)Application.Current.RootVisual;
    var startPage = (MainPage)frame.Content; 
    
    // Here, you can use startPage.MyButton
    

请注意,从页面外部访问 UI 控件几乎总是一个坏主意。您可能想要重新考虑应用程序的架构而不是这样做(例如,MVVM 模式可以提供帮助)。

于 2013-05-20T10:59:00.687 回答