猿问

我如何从另一个类调用按钮单击方法

大家好,我是 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 

    }


慕村9548890
浏览 92回答 2
2回答

神不在的星期二

您可以像这样为您的按钮制作一个处理程序:Button myButton=new Button(); myButton.Click += delegate(object sender, RoutedEventArgs e) {   //handle event};我希望这有帮助。

叮当猫咪

Reza 在如何为代码中生成的 Button 编写更多代码方面是正确的。但是,我要警告您,这不是 MVVM 的正确 WPF 用法,您可能会在以后给自己找麻烦。我建议您将视图的按钮绑定到可以在 ViewModel 中定义的 ICommand,该 ViewModel 将处理您的文本更新逻辑。正如您所提到的,您有不同的视图控件表示基于您的按钮按下的数据。您目前幸存下来,因为视图直接相互更新(这很糟糕)。当您想在其他视图中表示此数据时,假设您希望您的按钮在 2 个窗口中更新 3 个不同布局中的 5 个标签,您的视图中将有不可维护的引用。如果您让 ViewModel 从绑定到按钮的视图中获取命令,则可以让命令逻辑更新 ViewModel 中可以绑定多个视图的属性,并通过 INotifyPropertyChanged 同时更新它们。更不用说,ICommand 还可以让您完全禁止按钮被点击。考虑花一个小时查看本教程以了解 View 和 ViewModel 的分离。你现在的所作所为似乎是在为你日后的世界埋下伏笔……
随时随地看视频慕课网APP
我要回答