簡體   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