【发布时间】:2011-10-12 21:32:09
【问题描述】:
我在我的代码中动态创建按钮,有没有办法可以在我的按钮中存储一个自定义对象,以便在我按下此按钮时使用它?
【问题讨论】:
我在我的代码中动态创建按钮,有没有办法可以在我的按钮中存储一个自定义对象,以便在我按下此按钮时使用它?
【问题讨论】:
您可以为此使用Tag,但在获取对象时需要强制转换。
【讨论】:
考虑使用命令模式并将命令绑定到按钮的Command property 并使用CommandParameter Property 来存储您的对象。
单击按钮时,将使用CommandParameter(包含您的对象)作为参数调用命令的Execute 方法。
很高兴知道您正在处理的场景。只要您不构建自定义控件,通过代码生成 XAML 就表明您可能走错了路。
大多数事情都可以通过数据绑定和重复器控件来完成,例如列表框、菜单、数据网格等。您熟悉 MVVM 模式吗?
【讨论】:
CommandParameter,你看。它可能正是针对该用例而存在的。
ICommand 接口来创建自定义命令。此类可以包装所有需要的功能,并且可以使用您的对象进行初始化。
有很多选项可以以声明方式(通过绑定到 Tag 或其他未使用的字段)或不以声明方式执行此操作,但如果您动态创建按钮,一种不那么侵入性的方法是简单地创建一个 Dictionary<Button, T> 映射它存储每个按钮所需的对象。
【讨论】:
您也可以使用attached property。
【讨论】:
你也可以继承 Button 并将你的类放在那里...
【讨论】: