簡體   English   中英

在C#/ XAML中傳遞值的最佳方法

[英]Best way to pass values in C#/XAML

我剛剛開始使用C#,希望您能幫助我選擇傳遞值的最佳方法。 我正在練習在Visual Studio中構建計算器。 單擊按鈕后,我需要傳遞/獲取值。

我可以看到,一種(草率的?)方法是為每個按鈕的click事件創建代碼。 這樣做,我可以確定按下了哪個按鈕...然后可以調用一個方法並將其傳遞給硬編碼參數,以指示該按鈕的值。 例如,當按下一個按鈕時為“ BtnEntry_Click(1)”。

另一種方法是獲取發件人的名稱,然后使用switch語句檢查按鈕的名稱並分配值。 例如:

    private void BtnEntry_Click(object sender, RoutedEventArgs e)
    {
        var buttonClicked = sender as Button;
        switch (buttonClicked.Name)
        {
            case "btnOne":
                // The one button was pressed, so pass 1
                break;

            case "btnTwo":
                //The two button was pressed, so pass 2
                break;

            //etc .....
        }
    }

第三種選擇是將值放入按鈕的tag屬性中,然后從那里獲取它。

還有使用RoutedEventArgs的另一種選擇嗎? 如果可以,您可以提供示例代碼嗎?

上面的選項中是否有最好的方法?還是有更好的方法呢?

謝謝!

注意:一位編輯指出,該問題與在此問題上發布的問題有關 我覺得這是一個更廣闊的視野,涉及更多的潛在解決方案,也讓像我這樣的“菜鳥”更容易理解。 另一個問題涉及綁定代碼,這對我來說無濟於事。

但是,我確實遇到了有關命令的答案 ,它擴展了Drew Noakes和kidshaw提供的想法。 (謝謝!)

因此,我建議將此作為一個單獨的問題,因為它提供了比其他方法更容易的切入點,並且還解決了更多選項。

在您提供的選項中,標簽是我的偏愛。 但是,由於這是wpf,因此您可以實現mvvm解決方案,在該解決方案中您可以使用命令並向視圖模型提供參數。

通常,mvvm的開銷可能會阻止其在小型應用程序(例如計算器)中的使用。 但是,由於您是新手,並且正在尋找選擇,因此值得一試。

我不喜歡Tag屬性,因為它沒有被鍵入。 您可以考慮讓一個類從Button繼承,並讓該類實現一個公開其基礎數字值的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM