繁体   English   中英

CodeGo.net>如何从一个变量在其他类的类的类外部访问?

[英]c# - How to access a variable from outside its class in a method in some other class?

我是C#编程的初学者,在阅读了一些教程之后,我正在开发Windows Phone应用程序。

我的想法是,当用户单击Windows页面中的按钮时,其他Windows Phone页面中的其他按钮必须将颜色从红色更改为绿色。

如果我太基础,请原谅我。

我已经在名为“ IndexPage.xaml”的页面中定义了

        <Button x:Name="One_green"
            Content="1"             
            Background="Green"
            Click="One_Click"
         />

        <Button x:Name="One_red"
            Content="1"             
            Background="Red"
            Click="One_Click"                       
         />

现在我在窗口中看到红色按钮,因为绿色按钮隐藏在背面。

现在,以下代码来自另一个Windows Phone页面“ 1.xaml”

        <Button Content="GO" Click="Button_Click"/>

现在,当用户单击“ GO”按钮时,我希望该按钮在“ IndexPage.xaml”中变为红色到绿色。 所以我在“ 1.xaml.cs”中尝试了类似这样的代码

        private void Button_Click(object sender, RoutedEventArgs e)
        {  
        One_red.Visibility = Visibility.Collapsed;
        One_green.Visibility = Visibility.Visible;
        }

但是我无法访问上面代码中的“ One_red”或“ One_green”按钮。 请给我指示。

我也希望该代码仅执行一次。 (即)当IndexPage.xaml再次加载时,我希望该按钮始终为绿色。

提前非常感谢您。

请告诉我是否需要其他详细信息。

您可以在“ Index.xaml”类中定义一个公共或内部静态变量,指定在加载时将显示什么按钮,除非另行指定。 该变量可以在类之外访问,甚至可以在项目外部访问,具体取决于所选的修饰符。 creation of the page. “ Index.xaml”类的构造函数可以使用代码将其重置为默认值,以确保仅创建页面时发生。 如果您不是每次都创建一个新页面,则当您要将默认重置器放到前台时,必须将其放置在称为的方法中。

在我看来,您正在尝试学习,而不是遵循和实施SPEC。

因此,由于您从2014年(几乎2015年)开始使用C#,直接对数据绑定声明式进行强制性转换,而对MVC(MVx)进行MVVM(MVVx)转换将是非常有益的。

XAML是围绕此模式设计的。 这是XAML中的一种自然的处理方式,是一种完美的选择,也是学习该模式的理想平台。

它需要大量的学习,思考和重新学习,但是它将使您对现代编程技术大开眼界。

就是说...有太多方法可以满足您的要求,尽管没有一种是完全错误的,但是.Net / C#/ MsTech中有2种当前趋势,而IMO并不浪费您的时间:

功能性无功编程OOP / MVVx (x用于任何用途)。

例如ReactiveUI,Reactive Extensions,PRISM,Caliburn.Micro等。 它们可以组合在一起,就像您将传统的事件驱动/事件回调与MVVM和/或响应式编程相结合一样。 但是,我建议不要这样做。

我将从最有据可查的方式开始。

查看Windows Phone 8的数据绑定 这是我搜索“ Windows Phone 8 xaml数据绑定”并处理颜色和控件时的第一个结果。

如果您遵循该示例并将资源添加到您的应用程序,那么您就完成了。

当然,您仍然可以使用event => onClick + static类在View实例之间保存值,但是如果我正确地假设您正在尝试学习,那么我就不会走这条路。

对不起,如果我不满意。 :)

您可能无法访问按钮单击事件,因为它是私有的,您可能需要将其设置为受保护的或公开的,默认访问说明符也可能没问题。

public void Button_Click(object sender, RoutedEventArgs e)

或默认值为:

void Button_Click(object sender, RoutedEventArgs e)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM