none
c# CommandTarget 在prism DelgatedCommand 中的用法?? RRS feed

  • 問題

  • 這個問題我用google 查"CommandTarget prism DelgatedCommand " 翻了13頁都沒有結果 = =

    簡單說就是button 屬性 CommandParameter = "2" 然後

    public DelgatedCommand<object> commandtest = new  DelgatedCommand<object> (test , args => true);

    void commandtest(object obj) {....}

    觸發Command 就會在commandtest 的 obj.tostring() 得到 "2" 會是轉成Int 就是 2

    那請問如何得到CommandTarget 的參數?? 

    小弟想要做出 假設有眾多按鍵, 按下button時, 知道按下的是哪一個button

    若是用MouseOn 就可以用sender 來判斷

    CommandParameter 雖然也可以用參數配合各自的Name判斷, 但是有其他更好的辦法嗎??

     

    感謝回答

    2011年8月12日 下午 12:59

解答

  • 一般DelegateCommand都是一個Command繫結到一個Button, 如果要多個Button繫結到同一個Command, 可能需要從Command類別的原始碼著手, 例如加入對CommandTarget的支援
    2011年8月13日 上午 06:02

所有回覆

  • 在各button的Click事件裡

    把sender轉型button,再取得Name成員

    應該不用搞得太複雜吧

    範例:
        private void button1_Click(object sender, EventArgs e)
        {
          MessageBox.Show(((Button)sender).Name);
    
    
        }




    Shadowと愉快なコード達

    2011年8月12日 下午 01:15
  • 在VB.net 有Handles可以加入好幾個控制項事件,但C#.net 事件有點麻煩

    在 Form1.Designer.cs必須一個一個加入事件

    this.button1.Click += new System.EventHandler(this.Bt_click);
    this.button2.Click += new System.EventHandler(this.Bt_click);
    ...
    ...
    ...

    不過可以使用迴圈的方式加入多個,這樣就可以有效率的解決問題

     

    **我拉了五個 button

    private void Bt_click(object sender, EventArgs e)
            {
                Button[] bt = new Button[5] {button1 ,button2 ,button3 ,button4 ,button5 };
                for (int i = 0; i < bt.Length; i++)
                {
                    if (bt[i].Name == ((Button)sender).Name)
                    {
                        this.Text = bt[i].Text;
                        break;
                    }
                }
            }

    這是用Name也可以用Tag

    2011年8月12日 下午 02:21
  • 一般DelegateCommand都是一個Command繫結到一個Button, 如果要多個Button繫結到同一個Command, 可能需要從Command類別的原始碼著手, 例如加入對CommandTarget的支援
    2011年8月13日 上午 06:02