一个绑定多个带参数的按钮事件方法

    public Button[] btns;
    public Sprite Normal;
    public Sprite Highlight;



	// Use this for initialization
	void Start () {

        for (int i = 0; i < btns.Length; i++)
        {
            int index = i;
            btns[i].onClick.AddListener(delegate ()
            {
                btnOnClick(index);
            });
        }
	}

    public void btnOnClick(int index)
    {
        //循环先把按钮重置
        for (int i = 0; i < btns.Length; i++)
        {
            btns[i].image.sprite = Normal;//重置为普通图片
            btns[i].gameObject.GetComponentInChildren<Text>().color = Color.white;//按钮字变白

        }
        btns[index].image.sprite = Highlight;
        btns[index].gameObject.GetComponentInChildren<Text>().color = Color.yellow;//按钮字变黄
                     
    }

上述代码通过绑定多个带参数的按钮事件,实现了一组按钮当点击的时候重置其他按钮,点击按钮变色的功能。

WPF (Windows Presentation Foundation) 中的按钮可以绑定多个事件,通常我们会在`Button`上设置Click、MouseDown等事件,并且可以在数据绑定上下文中关联这些事件。当需要使用同一个参数处理这些事件时,可以利用`Command`(命令)和`ICommand`接口。 例如,我们可以创建一个`ICommand`实现类,其中包含一个方法一个可以用于存储共同参数的属性: ```csharp public class MyCommand : ICommand { public event EventHandler CanExecuteChanged; private object parameter; public bool CanExecute(object obj) { // 根据obj判断是否能执行命令,参数可以在此处设置或修改 parameter = obj; // 将共同的参数赋值给parameter return true; // 这里只是一个示例,实际可根据需求返回布尔值 } public void Execute(object obj) { // 在这里处理按钮点击、鼠标按下等多个事件,参数就是parameter OnExecute(obj); } protected virtual void OnExecute(object obj) { // 执行具体的业务逻辑,使用parameter作为参数 } } ``` 然后在XAML中,将`Button`的`Command`属性绑定到这个`MyCommand`实例,并通过`CanExecute`方法提供的`parameter`处理所有相关的事件: ```xaml <Button Content="Click Me" Command="{Binding MyCommand}" /> ``` 在代码-behind中或者依赖注入的方式下,初始化并注册`MyCommand`实例: ```csharp // 初始化MyCommand实例 var myCommand = new MyCommand(); // 如果使用MVVM模式,在ViewModel中注册Command this.MyCommand = myCommand; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值