亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何從另一個類調用按鈕單擊方法

我如何從另一個類調用按鈕單擊方法

C#
慕村9548890 2022-07-10 10:33:25
大家好,我是 c# 和 wpf 編程的新手,我正在嘗試創建一個動態菜單,其中我有 + 和 - 按鈕,這些按鈕會影響代表數量的文本框。所以在網格中,我調用了一個名為 productcard 的類,我在頁面中調用它來用產品填充網格。現在的問題是如何在我有多張卡片的頁面中使用產品卡片類中的點擊事件。class productcard {     Button plus = new Button();    Button minus= new Button();    public TextBox qtyl = new TextBox();    Grid z = new Grid();    public int left;    public int top;    GroupBox yy;    public GroupBox XX { get { return this.yy; } set { this.yy = value; } }    public productcard(int left , int top )    {        this.left = left;        this.top = top;        Thickness margin = new Thickness(left, top, 0, 0);        Thickness bmar = new Thickness(0, 0, 0, 0);        plus.Height = 30;        plus.Width = 40;        plus.VerticalAlignment = VerticalAlignment.Bottom;        plus.HorizontalAlignment = HorizontalAlignment.Right;        plus.Content = "+";        plus.HorizontalContentAlignment = HorizontalAlignment.Center;        // - button         minus.Height = 30;        minus.Width = 40;        minus.VerticalAlignment = VerticalAlignment.Bottom;        minus.HorizontalAlignment = HorizontalAlignment.Left;        minus.Content = "-";        minus.HorizontalContentAlignment = HorizontalAlignment.Center;        // add the button to the grid         z.Children.Add(plus);        z.Children.Add(minus);        // creat text box         qtyl = new TextBox();        qtyl.Height = 30;        qtyl.Width = 30;        qtyl.Background = Brushes.White;        qtyl.VerticalAlignment = VerticalAlignment.Bottom;        qtyl.HorizontalAlignment = HorizontalAlignment.Center;        qtyl.Text = "0";        // add text box to the grid inside the group box        z.Children.Add(qtyl);        // creat group box        GroupBox yy = new GroupBox();        yy.Margin = margin;        yy.VerticalAlignment = VerticalAlignment.Top;        yy.HorizontalAlignment = HorizontalAlignment.Left;        yy.Content = z;        yy.Height = 150;        yy.Width = 150;        XX = yy;        // insert group box in the produc grid     }
查看完整描述

2 回答

?
神不在的星期二

TA貢獻1963條經驗 獲得超6個贊

您可以像這樣為您的按鈕制作一個處理程序:


Button myButton=new Button(); 


myButton.Click += delegate(object sender, RoutedEventArgs e) {

   //handle event

};

我希望這有幫助。


查看完整回答
反對 回復 2022-07-10
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

Reza 在如何為代碼中生成的 Button 編寫更多代碼方面是正確的。

但是,我要警告您,這不是 MVVM 的正確 WPF 用法,您可能會在以后給自己找麻煩。

我建議您將視圖的按鈕綁定到可以在 ViewModel 中定義的 ICommand,該 ViewModel 將處理您的文本更新邏輯。正如您所提到的,您有不同的視圖控件表示基于您的按鈕按下的數據。您目前幸存下來,因為視圖直接相互更新(這很糟糕)。當您想在其他視圖中表示此數據時,假設您希望您的按鈕在 2 個窗口中更新 3 個不同布局中的 5 個標簽,您的視圖中將有不可維護的引用。

如果您讓 ViewModel 從綁定到按鈕的視圖中獲取命令,則可以讓命令邏輯更新 ViewModel 中可以綁定多個視圖的屬性,并通過 INotifyPropertyChanged 同時更新它們。更不用說,ICommand 還可以讓您完全禁止按鈕被點擊。

考慮花一個小時查看本教程以了解 View 和 ViewModel 的分離。你現在的所作所為似乎是在為你日后的世界埋下伏筆……



查看完整回答
反對 回復 2022-07-10
  • 2 回答
  • 0 關注
  • 109 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號