从另一页访问非静态方法

时间:2016-10-24 02:10:20

标签: c# windows uwp

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

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

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

1 个答案:

答案 0 :(得分:0)

静态与实例

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

静态意味着属于一个类,本质上。例如,人类的物种名称是"智人"。这与非静态(或实例)属性Name形成对比。人类是人类的一个实例,可以有一个名字。名为Bob的类人类的实例是有意义的;具有静态名称Bob的Human类将是......有趣的。

如何在C#UWP

中的页面之间传递状态

2个推荐选项:Reference

  • 通过Frame.Navigate()从一个页面切换到另一个页面时传递数据。
  • 静态存储您的数据以进行全局访问。

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

    例如,让我们在第1页说用户必须选择红色或蓝色。 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;
        }
        //...
    }