【问题标题】:Accessing Non Static Method from another page从另一个页面访问非静态方法
【发布时间】:2016-10-24 13:33:35
【问题描述】:

我在切换开关事件中有这个
LevelPage.change_color() = this.ChangeColorToggle.IsOn;

我正在从另一个名为 LevelPage 的页面中提取具有以下代码的方法 Moving_Ellipse.Fill = new SolidColorBrush(Colors.Black);

我想要切换开关甚至处理程序来访问该方法,但它会说它需要一个用于非静态方法的对象。我对这些东西很陌生,有人可以帮助我吗?

【问题讨论】:

  • 正如它所说,在调用非静态方法之前,您需要有一个对象。只能调用静态方法而不构造类的对象。您可以使用静态方法或创建对象。

标签: c# windows uwp


【解决方案1】:

静态与实例

class Human {
    public static readonly string SpeciesName = "Homo sapiens";
    private string Name { get; set; }
}

静态意味着本质上属于一个类。例如,Human 的 SpeciesName 是“Homo sapiens”。这与非静态(或实例)属性名称形成对比。一个人,一个 Human 类的实例,可以有一个名字。一个名为 Bob 的 Human 类的实例是有意义的;具有 Bob 的静态名称的 Human 类会......很有趣。

如何在 C# UWP 中的页面之间传递状态

2 个推荐选项:Reference

  • 通过 Frame.Navigate() 从一页更改到另一页时传递数据。
  • 静态存储数据以供全局访问。

    就个人而言,我更喜欢第二种选择。我通常有一个名为 Model 的对象,它包含我的应用程序的所有持久状态。我将唯一的 Model 实例存储为 App 类的静态属性。

    例如,假设在 page1 上,用户必须选择红色或蓝色。 Page2 将是那种颜色。所以代码会是这样的:

    class App : Application {
        public static Model GlobalModel { get; set; }
        //...
    }
    
    class Model {
        public Color UserSelectedColor { get; set; }
    }
    
    class Page1 {
        //...
        private void StoreSelectedColor(Color selectedColor) {
            App.GlobalModel.UserSelectedColor = selectedColor;
        }
        //...
    }
    
    class Page2 {
        //...
        private Color GetSelectedColor() {
            return App.GlobalModel.UserSelectedColor;
        }
        //...
    }
    
  • 【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      相关资源
      最近更新 更多